세션은 쿠키와 달리 웹브라우저가 아닌 서버에 값이 저장된다.
1.Session 세션
쿠키는 웹 브라우저에서 정보를 보관할 때 사용되는 반면 세션은 웹 컨테이너에서 정보를 보관할 때 사용된다.
웹 브라우저와 서버 양쪽에서 생성이 가능한 쿠키와 달리 세션은 오직 서버에서만 생성된다.
이러한 세션은 하나의 브라우저와 1:1 매핑되어지는데 브라우저가 다른 여러 JSP 페이지를 거치더라도 결국 하나의 브라우저는
하나의 세션과 연결되어 있고, 한번 세션이 생성되면 이후에 세션에 접근할 때에도 동일한 세션을 사용하게 된다.
2.Session 세션의 생성
세션은 page 디렉티브의 속성을 'true' 지정함으로써 생성할 수 있다.
<%@ page session = "true" %>
세션을 별도로 지정하지 않는경우 기본적으로 true로 설정되어 있다.
3.Session의 기본 메서드 활용
세션은 독특하게 가장 마지막에 세션에 접근한 시간을 구할 수 있다.
<% Date time = new Date(); SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); %> <head><title>세션정보</title></head> 세션ID: <%= session.getId() %> <br> <% time.setTime(session.getCreationTime()); %> 세션생성시간: <%= formatter.format(time) %> <br> <% time.setTime(session.getLastAccessedTime()); %> 최근접근시간: <%= formatter.format(time) %>
최근접근시간을 통해 세션의 타임아웃 등을 관리할 수 있다.
4.Session 기본 객체의 속성사용
세션에 값을 저장할 때는 속성을 사용한다. setAttribute()/getAttribute() 등의 메서드를 통해 기본객체의 속성을 사용하는 방법과
동일하다.
<% session.setAttribute("name", "hyun"); session.setAttribute("country", "대한민국"); %> <% String name = (String)sesstion.getAttribute("name"); %>
<% session.invalidate(); %>
세션을 종료하는 메서드 사용.
6.session 의 유효 시간
세션의 유효기간을 설정하는 방법은 두가지가 있다.
- WEB-INF/web.xml 파일에 <session-config> 태그 추가하여 지정하기
- session.setMaxInactiveInterval() 메서드 사용하여 유효기간 지정하기
<session-config> <session-timeout>60</session-timeout> </session-config>
<session-timeout>태그는 단위를 분으로 하므로 위에서는 60분의 유효시간을 지정했다.
<session-timeout>태그의 값을 0 또는 음수로 설정하면 세션은 유효기간없이 영구지속된다. 이 경우 명시적으로 invalidate()
메서드로 세션을 삭제하지 않으면 메모리에 계속 적재되어 메모리 부족현상이 일어날 수 있으니 유의해야 한다.
<% session.setMaxInactiveInterval(60 * 60); %>
<session-timeout>태그와는 달리 위 메서드의 값은 초 단위이므로 60 * 60 으로 60분을 설정해 주었다.,
'web > jsp' 카테고리의 다른 글
JSP JDBC ConnectionPool(커넥션 풀)과 DBCP (0) | 2014.09.08 |
---|---|
JSP JDBC 데이터베이스 프로그래밍 (0) | 2014.09.08 |
JSP Cookie 쿠키 (0) | 2014.09.08 |
JSP <jsp:forward> 액션 태그, JSP 페이지 이동 (0) | 2014.09.08 |
JSP <jsp:include> 액션태그, include디렉티브, 코드 자동포함 (0) | 2014.09.08 |