2022 / 10 / 31 월
- 세션 객체 session
- application 객체
- 내장객체의 영역
- 액션태그 (Action Tag)
- 자바빈(JavaBean)
- JDBC 라이브러리
✔ 세션 (session) 객체
세션
클라이언트가 서버에 연결된 상태
- 로그인 사용자를 구분해서,
로그인한 사용자에게 보여주는 메뉴
비로그인한 사용자에게 보여주는 메뉴
세션 ID
유저가 브라우저를 이용하여, 사이트를 첫 접속했을 경우
해당 서버에서 사용자를 구분하는 목적으로 발급(생성)해주는 고유한 ID
세션객체
session 내장 객체의 메소드
|
|
String getId( ) | 해당 웹 브라우저에 대한 고유한 세션 ID를 리턴 |
long getCreationTime( ) |
해당 세션이 생성된 시간을 리턴
|
long getLastAccessedTime( ) | 마지막 접근시간을 리턴 |
void setMaxInactiveInterval(time) | 세션 유지시간을 지정 |
int getMaxInactiveInterval( ) | 기본 값은 30분으로 세션 유지시간을 리턴 |
boolean isNew( ) | 새로 생성된 세션의 경우 true 값을 리턴 |
void invalidate( ) | 세션을 무효화 |
⚙ 로그인된 상태에서 10초뒤 로그아웃이 되도록 코드를 작성해보자 !
1. sessionTimeout.jsp
<body>
<%
// 톰캣의 기본 세션시간 : 30분(1800초)
//세션시간을 설정할 때 사용. 단위 : 초
session.setMaxInactiveInterval(10);
// 서버측으로부터 발급받은 세션ID로 가지고 서버에 접속하여,
// 그 세션 ID로 관리되는 메모리에 아래정보를 저장한다.
session.setAttribute("loginstatus", "doccomsa");
%>
<a href="loginstatus.jsp">로그인 상태확인하기</a>
</body>
2. loginstatus.jsp
<body>
<%
// 현재 갖고있는 세션ID로 서버측의 메모리에서 아래정보가 존재하는지 체크
if(session.getAttribute("loginstatus") != null) {
out.println("로그인 상태입니다.");
}else {
out.println("로그인 상태가 아닙니다.");
}
%>
<a href="logout.jsp">로그아웃</a>
</body>
✔ application 객체
application 객체 메소드
|
|
String getServerInfo( ) |
웹 컨테이너의 이름과 버전을 리턴
|
String getMimeType(fileName) | 지정한 파일의 MIME타입 리턴 |
String getRealPath(path) | 지정한 경로를 웹 어플리케이션 시스템상의 경로로 변경하여 리턴 |
void log(message) |
로그 파일에 message를 기록 |
<body>
<h2>application 내장객체</h2>
<%
String info = application.getServerInfo();
String path = application.getRealPath("/");
application.log("로그 기록 :");
%>
웹 컨테이너의 이름과 버전 : <%=info %><br>
웹 어플리케이션 폴더의 로컬 시스템 경로 : <%=path %>
</body>
✔ 내장객체의 영역
1. page영역
한 번의 웹 브라우저(클라이언트)의 요청에 대해 하나의 JSP페이지가 호출
2. request영역
한 번의 웹 브라우저(클라이언트)의 요청에 대해 같은 요청을 공유하는 페이지가 대응
- include 액션 태그, forward 액션 태그를 사용하면 request 객체를 공유하게 됨
3.session영역
하나의 웹 브라우저 당 1개의 session객체가 생성
- 같은 웹 브라우저 내에서는 요청되는 페이지들
- 주로 회원관리에서 회원인증에 사용
4. application영역
하나의 웹 어플리케이션 당 1개의 application 객체가 생성
- 같은 웹 어플리케이션에 요청되는 페이지들
- /studyjsp 웹 어플리케이션에서는 같은 application객체를 공유
✔ 액션태그 (Action Tag)
forward 액션태그 |
<jsp:forward>
|
웹 페이지 간의 제어를 이동시킬 때 사용
|
plug-in 액션태그 |
<jsp:plug-in>
|
웹 브라우저에서 자바 애플릿을 실행시킬 때 사용
|
useBean 액션태그 |
<jsp:useBean>
|
자바빈을 JSP페이지에서 사용할 때 사용
|
setProperty 액션태그 |
<jsp:setProperty>
|
프로퍼티의 값을 세팅할 때 사용
|
getProperty 액션태그 |
<jsp:getProperty>
|
프로퍼티의 값을 얻어낼 때 사용
|
1 . include 액션태그 - <jsp:include>
다른 페이지의 처리 결과를 현재 페이지에 포함하며, 페이지를 모듈화 할 때 사용한다.
1. includedTest.jsp
<body>
<p>
include 지시자는 하나의 파일로 합쳐지고, 서블릿형태의 자바로 변환 및 컴파일 과정 후 실행된다.
include 액션태그는 독립적으로 자바로 변환 및 컴파일 과정 후 실행되어, 그 결과가 삽입된다.
</p>
<jsp:include page ="top.jsp" />
</body>
2. top.jsp
<body>
join | mypage | login
</body>
jsp:include 는 별도로 실행이 되고 결과를 만들어서 들어오기 때문에
top_jsp파일도 java파일이 생성된다.
✨결과는 화면으로 봤을 때 동일하지만 처리하는 과정이 다르다 !
⚙ 사용자에게 이름을 입력받는 include 액션태그 예제 1
1. 첫번째 페이지의 pageName을 두번째 페이지에 입력하자
2. includedTest의 내용이 pageName에 저장되며 실행된다
🔔
사용자가 이름을 입력하면 두번째 페이지 실행
두번째 페이지와 세번째 페이지의 request는 동일한 의미를 갖게되며 실행된다.
🛠 실행 결과 🛠
⚙ include 액션태그 예제 2
❗⚠❗ 유의사항
value 값안에 공백을 넣으면 공백도 데이터로 파악한다.
따라서, 공백이 없도록 코드를 작성하자 !
2 . forward 액션태그 - <jsp:forward>
1. forwardParam.jsp
<body>
<h2>포워딩될 페이지에 파라미터값 전달 예제</h2>
<form method="post" action="forwardParamTo.jsp">
<dl>
<dd>
<label for="name">이름</label>
<input id="name" name="name" type="text"
placeholder="홍길동" autofocus required>
</dd>
<dd>
<label for="color">색선택</label>
<select id="color" name="color" required>
<option value="blue" selected>파랑색
<option value="green">초록색
<option value="red">빨강색
<option value="yellow">노랑색
</select>
</dd>
<dd>
<input type="submit" value="확인">
</dd>
</dl>
</form>
</body>
2. red.jsp
<style>
img {
border : 0px;
width : 70px;
height : 30px;
}
</style>
<%
String name = request.getParameter("name");
String selectedColor = request.getParameter("selectedColor");
%>
<h2> 포워딩되는 페이지 - <%=selectedColor + ".jsp" %></h2>
<b><%=name %></b> 님이 좋아하는 색상은 <%= selectedColor%>이고, 생명을 상징하는 색입니다. <br>
<img src ="<%=selectedColor + ".jpg" %>">
🛠 실행 결과 🛠


✔ 자바빈(JavaBean)
자바로 작성되어진 컴포넌트로 클래스들로 이루어진 복합적인 구조를 갖는다.
자바빈 클래스 작성
1. package 패키지명; (없으면 생략가능)
2. import 패키지명을 포함한 클래스의 풀네임; (없으면 생략가능)
3. class 클래스명{
//필수정의, 생략 불가능
}
✔ JDBC 라이브러리
JDBC 라이브러리?
- JDK 구성 요소 중 하나이다.
- java.sql 패키지가 JDBC기능을 제공한다.
- 기능 : 데이터베이스를 연결하고, 쿼리(SQL문)을 실행하는 기능
jdbc driver : 데이터베이스 접속하기 위해, 데이터베이스 회사에서 제공하는 프로그램
[ 오라클, MS-SQL Server, My-SQL, DB2, Sybase, ... ]
'🏃♀️ Do it ! > TIL' 카테고리의 다른 글
JSTL / Spring 준비하기 🛠 (0) | 2022.11.02 |
---|---|
쿠키 / 세션 / 표현언어(EL) (0) | 2022.11.01 |
백엔드 개발자가 되기 위해서는 ... / 웹 프로그래밍 / JSP (0) | 2022.10.27 |
데이터베이스 예외처리 / 트랜잭션 (0) | 2022.10.26 |
데이터베이스 PL / SQL 기본 구조 , 구성요소, 제어문, 사용자 정의 함수 / 프로시저 (0) | 2022.10.25 |