사용자 입장에서 웹 페이지 사이의 상태나 정보를 공유하려면 프로그래머가 세션 트래킹(Session Tracking)이라는 웹 페이지 연결 기능을 구현해야 한다.
HTTP 프로토콜은 서버-클라이언트 통신 시 stateless 방식으로 통신을 한다. 브라우저에서 새 웹 페이지를 열면 기존의 웹 페이지나 서블릿에 관한 어떤 연결 정보도 새 웹 페이지에서는 알 수 없다.
HTTP 프로토콜은 각 웹 페이지의 상태나 정보를 다른 페이지들과 공유하지 않는 stateless 방식으로 통신을 한다. 따라서 웹 페이지나 서블릿끼리 상태나 정보를 공유하려면 웹 페이지 연결 기능, 즉 세션 트래킹을 이용해야 한다.
웹 페이지를 연동하는 방법
<hidden>태그 : HTML의<hidden>태그를 이용하여 웹 페이지들 사이의 정보를 공유- URL Rewriting : GET 방식으로 URL 뒤에 정보를 붙여서 다른 페이지로 전송
- 쿠키 : 클라이언트 PC의 쿠키 파일에 정보를 저장한 후 웹 페이지들이 공유
- 세션 : 서버 메모리에 정보를 저장한 후 웹 페이지들이 공유
쿠키의 종류 => Persistence 쿠키, Session 쿠키
파일로 생성하며, 쿠키를 삭제하거나 쿠키 설정 값이 종료된 경우 종료된다. 최초 접속 시 서버로 전송되며, 로그인 유무 또는 팝업창을 제한할 때 사용한다.
브라우저 메모리에 생성되며, 브라우저를 종료한 경우 종료된다. 최초 접속 시 서버로 전송되지 않으며, 사이트 접속 시 Session 인증 정보를 유지할 때 사용한다.
웹 페이지에서 사용되는 정보 중에 로그인 정보처럼 보안이 요구되는 정보는 대부분 세션을 이용한다.
서블릿에서 세션을 이용하려면 HttpSession 클래스 객체를 생성해서 사용해야 한다. HttpSession 객체는 HttpServletRequest의 getSession() 메서드를 호출해서 생성한다.
- getSession(): 기존의 세션 객체가 존재하면 반환하고, 없으면 새로 생성한다.
- getSession(true) : 기존의 세션 객체가 존재하면 반환하고, 없으면 새로 생성한다.
- getSession(false) : 기존의 세션 객체가 존재하면 반환하고, 없으면 null을 반환한다.