본문 바로가기
프로그래밍 놀이터/Web

Chap 10. 클라이언트와의 대화 2 : 세션

by 돼지왕 왕돼지 2015. 1. 14.
반응형

Chap 10. 클라이언트와의 대화 2 : 세션


* 세션 사용하기.


쿠키가 웹 브라우저에 정보를 보관할 때 사용된다면, 세션은 웹 컨테이너에 정보를 보관할 떄 사용된다.

세션은 오직 서버에서만 생성된다.



-

세션 생성하기.


<%@ page session="true" %>


기본값이 true 이기 때문에 사실 저렇게 명시적으로 써주지 않아도 된다.


세션은 브라우저가 최초로 접속할 때 생성되며 그 이후로는 이미 생성된 세션을 사용된다.


쿠키 대신 세션을 사용하는 이유는 보안에서 앞선다는 점이다. 세션의 값이 오직 서버에만 저장되어 중요한 데이터를 저장하기 좋다. 세션은 웹 브라우저가 강제적으로 쿠키를 막은 경우에도 사용할 수 있다.



-

session 기본 객체


String getId()

long getCreationTime()

long getLastAccesssedTime()


웹 컨테이너는 웹 브라우저에 쿠키를 통해서 세션 ID 를 전달하고 받는다.



-

세션 종료


session.invalidate() 메서드를 사용하여 세션을 종료할 수 있다.

session 기본 객체가 삭제되므로 session 객체에 저장한 속성 목록도 함꼐 삭제된다.



-

세션의 유효 시간


세션의 유효시간은 두 가지 방법으로 설정할 수 있다.


1. web.xml 사용


<web-app ...>

<session-config>

<session-timeout>타임아웃(분)</session-timeout>

</session-config>

</web-app>


타임아웃값이 0 이나 음수일 경우 세션은 유효시간이 없다.
이 경우 invalidate 가 명시적으로 호출되지 않으면 세션 객체가 서버에서 제거되지 않고 유지된다.
이 경우 제대로 관리하지 않으면 시간이 흐르면 메모리 부족 현상이 발생할 수 있다.


2. 코드로 작성

<% session.setMaxInactiveInterval( 초단위 값 ) %>


-
request.getSession() 을 이용한 세션 생성

request.getSession() 을 통해서도 세션을 생성할 수 있다.



* 세션을 사용한 인증 정보 유지.

쿠키를 이용하는 방법과 비슷하다.

1. 로그인에 성공하면, session 기본 객체의 특정 속성에 데이터를 기록한다.
2. 이후 session 기본 객체의 특정 속성이 존재하면 로그인한 것으로 간주한다.
3. 로그아웃할 경우 session.invalidate() 메서드를 호출하여 세션을 종료한다.







반응형

댓글