* 세션이란?
쿠키와 마찬가지로 서버와의 connection 관계를 유지하기 위해서 이용자 정보를 저장하는 객체,
기존의 ‘쿠키’ 가 클라이언트 에 저장되는 반면, ‘세션’ 은 서버에 저장됨.
세션은 서버에서만 접근이 가능, 따라서 쿠키보다 보안성이 뛰어나다.
쿠키의 기본 용량이 4KB, 300개로 제한적인 반면에 세션은 데이터에 대한 제한이 없다(용량, 타입).
WAS 에서는 connection이 만들어지는 브라우저 별로 세션객체를 생성해서 관리함.
세션은 ‘브라우저’ 별로 생성되며, 각각의 세션은 유니크한 아이디(세션 아이디)로 관리됨.
서버에서 발급한 세션 아이디는 클라이언트의 쿠키에 저장된다. (no expiry)
- 세션(Session)이란 HTTP 프로토콜을 사용하는 인터넷 사용자가 어떤 웹사이트를 방문할 경우, 사용자와 서버 사이의 연결을 확인하기 위한 정보입니다. 세션은 서버 내부에 저장되며, 저장된 값은 반영구적이며, 사용자가 특정 시간동안 사용되지 않을 경우 폐기될 수 있는 정보입니다.
- 세션은 쿠키와 마찬가지로 연결 지향 통신을 수행하는데 기초적인 요구사항입니다.
- 사용자(Client)가 세션을 생성하고 이를 이용한 통신 과정은 다음과 같습니다.
- 사용자가 서버에 연결 요청을 보냅니다.
- 서버는 이때 세션(Session) ID가 생성 및 저장됩니다
- 그리고 이러한 세션 정보를 쿠키에 입력하여, 함께 연결 응답 정보를 전송합니다.
- 사용자는 다음에 연결을 수행할 때 쿠키와 함께 데이터를 요청합니다.
- 서버는 이때 쿠키를 확인하고, 쿠키에 입력된 세션정보를 통해 사용자가 누구인지 확인한 후 응답을 하게 됩니다.
* 세션 관련 메소드 ( session 내부객체 메소드)
- setAttribute() : 세션의 속성 설정 / ex) session.setAttribute("id", "test"); / value 타입은 Object 다.
- getAttribute() : 세션에서 데이터를 얻을 때(세션의 속성을 사용할 때) 리턴 타입이 Object이다.
ex) String id = (String)session.getAttribute("id");
- getAttributeNames() : 세션에 저장되어 있는 모든 데이터의 이름을 얻어올 때
- removeAttribute() : 세션에서 특정 데이터를 제거한다. / ex) session.removeAttribute("id");
- invalidate() : 세션의 모든 데이터를 삭제한다. ex) session.invalidate();
- getId() : 자동생성된 ‘세션 아이디’를 얻어올 때 사용한다.
- isNew() : 세션이 최초로 생성되었는지 여부를 알고자 할때
- getMaxInactiveInterval() : 세션의 유효시간을 얻어올 때 (세션은 최근에 요청된 시간 기준으로 카운트 됨)
3행 "java.util.Enumeration" import 꼭 하기
세션은 브라우저 별로 생성되어 서버 컨테이너에 저장됩니다.
각각 고유 세션아이디가 부여됩니다.
세션아이디확인은 getId()
유효시간도 확인은 getMaxInactiveInterval()
세션의 유효시간은 Server의 web.xml 파일에 설정되어 있음(분 단위)
session 객체는 웹 브라우저와 1:1 매핑되므로
해당 웹 브라우저를 닫지 않는 한 같은 창에서 열려진 페이지는 모두 같은 session 객체를 공유하게 된다.
따라서 session 객체의 setAttribute() 메소드를 사용해서 세션의 속성을 지정하게 되면 계속 상태를 유지하는 기능을 사용할 수 있게 된다.
'JSP' 카테고리의 다른 글
[JSP] JBDC (0) | 2022.04.06 |
---|---|
[JSP] 자바 빈 (0) | 2022.04.05 |
[JSP] 쿠키 (0) | 2022.03.25 |
[JSP] 액션 태그 (0) | 2022.03.24 |
[JSP] 내부객체 (0) | 2022.03.24 |