우리가 일반적으로 사용하는 회원 로그인등을 구현할때 많이 사용되는것이 세션(session) 객체이다.
사용자의 로그인 정보를 쿠키나 세션등에 저장하여 로그인 여부를 확인할 수 있는데, 클라이언트에 저장되는 쿠키와는 달리
세션(session) 정보는 웹 서버(컨테이너)에 저장이 되므로 보안상 더 유리하다.
위와 같은 이유로 많은 사람들이 로그인 구현시 세션(session)을 활용하여 많이 구현한다.
세션은 클라이언트의 브라우저 1개당 1개씩 생성이 되며, 동일 클라이언트(동일 PC)라 할지라도 브라우저 종류(FF,Chrome,IE)가 다르면 세션을 추가로 생성하는게 가능하다.
이 경우 특별한 로그인 방식을 취하지 않으면 여러 브라우저에서 동시 로그인이 가능하다는 이야기가 된다.
JSP에서의 세션은 javax.servlet.http 의 HttpSession을 사용하며, JSP의 request, response와 마찬가지로 기본 내장객체로 지정되어 있어 별도의 구현없이 손쉽게 사용이 가능하다.
세션(session) 객체에서 사용할 수 있는 메소드는 다음과 같다.
Method |
Return |
Description |
setAttribute(String name, Object value) |
void |
세션 객체를 생성한다 |
getAttribute(String name) |
Object |
해당 세션 객체를 가져온다 |
getAttributeNames() |
Enumeration |
해당 세션 이름 전체를 가져온다. |
setMaxInactiveInterval(int interval) |
void |
세션 유지시간을 지정한다.(초 단위) |
removeAttribute(String name) |
void |
세션 객체를 삭제한다. |
getMaxInactiveInterval() |
int |
세션 유지시간을 가져온다 |
getId() |
String |
세션 고유 ID를 가져온다 |
invalidate() |
void |
전체 세션을 무효화 시킨다. |
사실 세션에서 중요한 것은 getId() 부분이다. 위에서 말했듯이 클라이언트의 브라우저 1개당 고유 세션이 생성되는데,
이때 해당 세션을 구분할수 있게끔 하는것이 세션고유ID 이다. 이 고유ID는 처음 세션이 생성되는 시점에 자동으로 생성이 된다.
그렇기 때문에 setAttribute를 이용하여 여러 세션을 만들어도 세션고유ID에 종속되므로 각기 다른 사용자들의 세션을 구분할 수 있는것이다.
마지막으로 jsp 페이지에서의 세션은 아래와 같이 사용하면 된다.
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <% String id = "홍길동" ; String addr = "서울" ; // 세션 생성 session.setAttribute("name", id) ; session.setAttribute("addr", addr) ; // 세션 유지시간 설정(예 : 1시간) session.setMaxInactiveInterval(60*60) // 세션값 가져오기 out.println(session.getAttribute("name"); out.println(session.getAttribute("addr"); // 세션값 삭제 session.removeAttribute("addr") // 세션값 가져오기 out.println(session.getAttribute("name"); // 세션을 삭제했으므로 addr은 안나옴 out.println(session.getAttribute("addr"); // 세션 전체 무효화(로그아웃시 주로 사용) session.invalidate(); %>
'Language > Java / JSP' 카테고리의 다른 글
[Java] Sleep을 이용한 일시정지 (2) | 2014.10.27 |
---|---|
[JSP] Cookie(쿠키) 생성, 가져오기, 삭제 (0) | 2014.10.24 |
[Java] addBatch와 exceuteBatch를 이용한 대용량 데이터 처리 (0) | 2014.10.15 |
[Java] 프로퍼티(Properties) 파일 읽기 (1) | 2014.10.13 |
[Java] 페이스북 담벼락 글 가져오기 (0) | 2014.10.08 |