세션 Session
세션은 쿠키와 다르게 서버에 저장한다. 데이터를 객체 형태(Object)로 저장한다. 크기 제약이 없다.
Session을 사용에 제한이 생기는 이유
세션은 로그아웃할때까지 지속해야하는 정보가 있을 때 사용한다.
로그인 아이디, 멤버 타입, 등급 등의 여러 기능, 페이지 등에서 사용할 정보를 세션에 저장한다.
scope 객체
정보를 담을 수 있는 jsp/servlet 내장 객체이다.
- page, request, session, application
- 모두 setAttribute(), removeAttribute(), getAttribute()를 갖는다.
getSession 세션 가져오기
웹 서버를 실행하면 세션을 자동으로 실행한다. getSession은 세션을 가져오는 작업이다.
HttpSession session = request.getSession();
getSession(true) : 현재 사용중인 세션이 있으면 그 세션을 반환하고, 없으면 새로 생성해서 주는 메소드이다.
getSession(false) : 현재 사용중인 세션이 있으면 그 세션을 반환하고, 없으면 에러가 발생한다.
* true가 디폴드 파라메터이므로 파라메터를 안 넣으면 자동으로 true로 실행한다.
세션에 값 저장
//세션에 값 저장
session.setAttribute("param1", "value");
세션에 저장한 값 꺼내는 메소드
//세션에 저장한 값 꺼내는 메소드
String val = (String) session.getAttribute("param1");
session id 연결을 구분하는 고유한 값
사람의 주민번호와 같은 역할이다. 서버에 연결하는 클라이언트 별로 중복되지 않는 난수를 생성하여 클라이언트에게 부여한다. 클라이언트가 서버에 요청할때마다 헤더에 담아서 보낸다.
String sessionId = session.getId();
로그아웃 처리
invalidate 는 세션을 무효화하여 로그아웃으로 처리한다.
session.invalidate();
setAttribute
1) request.setAttribute
request.setAttribute("이름", 값);
한 요청이 응답을 보낼때까지 살아있다. 즉, 클라이언트에게 request 응답이 갈때까지 살아있다.
request에 담은 정보는 응답페이지에 가면 없어진다.
2) session.setAttribute
session.setAttribute("이름",값);
세션이 invalidate(무효화) 될때까지 정보가 살아있다. 프로젝트 내의 모든 파일이 사용 가능하며, 로그아웃하면 없어진다.
로그아웃해서 현재 세션을 삭제하고 새 세션이 생기기 전까지 정보를 유지한다. 로그아웃할때까지 정보가 살아있다.
request.setAttribute 와 session.setAttribute의 차이
값을 얼마나 유지하는가에 대한 차이이다.
request는 하나의 요청이 완료되는 시점에 저장된 값이 사라지고
session은 session을 삭제(무효화) 할때까지 저장되는 값이다.
* session 의 서버 유지비용이 더 크다.
request.method
전송방식 값을 갖는 속성 (GET, POST)
'${pageContext.request.method}' == 'GET'