1. 세션(session)

- API : http://docs.oracle.com/javaee/7/api/javax/servlet/http/HttpSession.html

- 쿠키와 달리 웹 브라우저에 정보를 보관하는 것이 아니라, 웹 컨테이너에 정보를 보관할 때 사용한다.

- 오직 서버에서만 생성된다.

- 하나의 웹 브라우저에 하나의 세션을 생성한다.

- 웹 브라우저의 여러 요청을 처리하는 JSP 페이지 사이에서 공유되므로 1:1 매핑되는 값을 저장할 때 사용한다.

- 세션이 쿠키보다 보안에 앞서고, 쿠키 설정 여부에 상관없이 사용이 가능하다.


2. 세션 생성

- <@ page session = "true" %>

- session.setAttribute("세션이름", "값");

- page 디렉티브의 session 속성의 기본값은 ture 이므로 false로 지정하지 않으면 자동 생성된다.


3. 세션 기본 객체

- setAttribute(), getAttribute() 등의 메서드를 사용하여 속성값을 저장하거나 읽어오고, 세션만의 고유 정보를 제공한다.

- 각각의 세션을 구분하기 위해 고유의 세션 ID를 할당한다.

- 세션 ID는 쿠키를 통해서 웹 브라우저에 전달된다.

- 가장 최근에 사용한 시간을 기록한다.


 메서드

 반환형 

 설명 

 getId() 

 String 

 세션의 고유 ID를 구한다. 

 getCreationTime() 

 long 

 세션이 생성된 시간을 구한다. 

 getLastAccessedTime() 

 long 

 웹 브라우저가 가장 마지막에 세션에 접근한 시간을 구한다. 


<!-- session.jsp --> <%@page import="java.text.SimpleDateFormat"%> <%@page import="java.util.Date"%> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <% Date t = new Date(); SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>세션 정보</title> </head> <body> 세션 ID : <%= session.getId() %><br> <% t.setTime(session.getCreationTime()); %> 세션 생성시간 : <%= sf.format(t) %><br> <% t.setTime(session.getLastAccessedTime()); %> 최근 접근시간 : <%= sf.format(t) %> </body> </html> <!-- 실행결과 세션 ID : 7FE891620D3A4A35E80FBBD176B86116 세션 생성시간 : 2013-09-22 03:33:10 최근 접근시간 : 2013-09-22 03:34:12 -->



4. 세션 기본 객체의 속성

- 세션의 값을 저장할 때 속성을 사용한다.

- 세션 기본객체의 속성을 저장하면 세션이 종료되기 전까지는 속성값을 사용할 수 있다.


<!-- setSession.jsp -->

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%
	session.setAttribute("ID", "gz");
	session.setAttribute("NAME", "갱짱");
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>세션에 정보 저장</title>
</head>
<body>
	세션에 정보를 저장~<br>
	
	<%
		String id = (String) session.getAttribute("ID");
		String name = (String) session.getAttribute("NAME");
	%>
	<br>
	아이디 : <%= id %><br>
	이름 : <%= name %><br>
</body>
</html>

<!-- 
	실행결과
	
	세션에 정보를 저장~

	아이디 : gz
	이름 : 갱짱
 -->



5. 세션 종료

- invalidate() 메서드를 사용하여 세션을 종료한다.

- 세션이 종료되면 기존에 사용하던 세션 기본 객체가 삭제되고 다음에 세션을 사용할 때에는 새로운 세션 기본객체가 사용된다.


6. 세션 유효시간

- 세션은 마지막 접근 시간으로부터 일정 시간 이내에 다시 세션에 접근하지 않을 경우 자동으로 종료하는 기능을 갖고 있다.

- 세션의 유효시간은 web.xml 파일에 <session-config> 태그로 설정하는 방법과 setMaxInactiveInterval() 메서드를 사용하는 2가지 방법이 있다.

- <session-timeout> 의 값을 0이나 음스로 설정하면 세션은 유효 시간을 갖지 않는다.

- 유효시간이 없는 상태에서 invalidate() 메서드를 명시적으로 실행하지 않으면 한번 생성된 세션 객체는 계속 메모리에 남아 있게 된다.


<!-- web.xml -->

	<session-config>
		<session-timeout>60</session-timeout>
	</session-config>


<%
	session.setAttribute("ID", "gz");
	session.setAttribute("NAME", "갱짱");
	session.setMaxInactiveInterval(60 * 60);
%>


+ Recent posts