1. Session이란?
Session은 클라이언트의 정보가 서버에 저장되는 공간을 말한다.
클라이언트가 서버에 접속하면 클라이언트마다 고유의 Session공간이 생기는데 이 영역에 클라이언트의 정보를 저장하여 필요시에 사용하는데 주로 로그인정보를 담아 특정페이지로 이동시 해당페이지의 열람권한이 있는지 없는지 여부를 세션에 저장된 아이디값을 가져와 체크를 하는데 사용한다.
2. Session 사용방법
Session은 HttpServletRequest객체에서 얻어올 수 있다.
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
HttpSession session = request.getSession();
}
3. Session에 값 저장
세션에 세션 변수를 선언하고 값을 담아 웹서버가 끊기지 않는 이상 데이터를 유지한다. 값을 담기 위해서는 setAttribute 함수를 사용한다.
session.setAttribute("id", vo.getId());
session.setAttribute("name", vo.getName());
4. Session의 값 가져와서 사용하기
아래의 코드와 같이 사용하면 되며 JSP에서도 동일하게 스크립트영역에서 사용이 가능하다.
그리고 기본적으로 object타입으로 session에 저장되기 때문에 값을 꺼내서 사용할 때에는 형변환이 필수이다.
String id = (String)session.getAttribute("id");
String name = (String)session.getAttribute("name");
5. Session의 유지시간
Session의 유지 시간은 기본적으로 30분이다. 개발자의 의도대로 Session의 유지시간을 세팅하는 방법은 두가지가 있다
첫번째로는 web.xml에서 설정하는 방법이다. 단위는 분단위로 계산된다.
<?xml version="1.0" encoding="utf-8"?>
<web-app xmlns = "http://java.sun.com/xml/ns/javaee" version = "3.0">
<session-config>
<session-timeout>50</session-timeout>
</session-config>
</web-app>
두번째로는 Session객체가 제공하는 setMaxInactiveInterval() 메소드를 이용하는 방법이다. 단위는 초단위로 계산된다.
session.setMaxInactiveInterval(60*60);
6. Session의 삭제
Session은 지정한 시간이 지나거나 브라우저를 종료하면 자동으로 만료가 되며
지정된 함수를 이용하여 강제로 제거할수도 있다.
session.invalidate(); // 전체 세션 삭제
session.removeAttribute("id") // 세션에 저장된 특정값만 삭제
댓글