우리가 처음 웹 페이지를 이동하면
StateLess
상태이다.
StateLess 상태는 현재페이지는 이전페이지에서 어떤 정보가 어떻게 돌아갔는지 정보가 전혀 없다는 상태이다.
속성(Attribute)에 정보를 저장하고 사용하는 것을 말한다.
총 3개의 영역을 사용하는데, ServletContext
, HttpSession
, HttpServletRequest
영역을 사용한다.
1)ServletContext
: 애플리케이션(프로젝트 내부 어디서든 종료 전까지 접근해서 사용이 가능하다. (ex. 방문자 수 등 서비스 망할 때 까지 사라지지 않는다.)
2)HttpSession
: 실행중인 웹 브라우저 종료 전까지 접근해서 사용이 가능하다.
3)HttpServletRequest
: 응답 전까지 접근해서 사용이 가능하다. (한번의 요청은 한번의 응답으로 끝)
getAttribute('속성')
: 해당 속성 값 가져오기
setAttribute('속성', '값')
: 속성에 값 저장하기(값은 Object 타입으로 저장. getter에서 값 가져올 때 캐스팅해서 사용하면 된다.
removeAttribute('속성'
: 해당 속성 삭제하기
ServletContext ctx = getServletContext(); // 또는 request.getServletContext();
ctx.setAttribute("a", 1); a에 1을 저장
HttpSession session = request.getSession();
session.setAttribute("b", 2); // b에 1을 저장
request.setAttribute("c", 3); // C에 3을 저장
- 서버 메모리에 저장되는 정보이다. (서버에 저장되므로 쿠키와 달리 보안에 유리하다)
- 웹 페이지들에서 참조해야 하는 공유 정보를 저장해두고 사용하기 위해 세션을 활용할 수 있다.
- 유효 시간을 가진다.(기본 30분)
- 브라우저 당 하나의 세션이 생성된다(세션ID를 통해 각 세션을 구분한다.)
- 로그인 구현과 같은 기능은 브라우저를 끄면 로그인이 풀리게 되어야 하므로 Session 영역에 저장하므로 알아두어야 할 아주 중요한 개념이다.
- 세션은 HttpSession 클래스 객체임
- 세션은 HttpServletRequest 클래스 객체의 getSession() 메소드를 호출해서 생성함
HttpSession getSession()
: 기존의 세션 객체가 존재하면 해당 세션 객체를 반환한다. 없으면 새로 생성한 세션 객체를 반환한다.
HttpSession getSession(boolean arg)
: 기존의 세션 객체가 존재하면 해당 세션 객체를 반환한다. true인 경우 세션 객체가 없으면 새로 생성한 세션 객체를 반환한다. false인 경우 세션 객체가 없으면 null을 반환한다.
long getCreateTime()
: 세션이 생성된 타임스탬프(Timestamp)값 반환한다.
String getId()
: 세션에 할당된 고유 식별자 반환한다.
void invalidate()
: 현재 생성된 세션을 소멸시킨다.
void setMaxInactiveInterval(int interval)
: 세션 유지 시간을 초 단위로 설정한다.
그림이 너무 귀여워요.. 잘읽었습니다!