Session

oyeon·2021년 2월 7일
0

세션 정의

정의

  • 클라이언트 별로 서버에 저장되는 정보

이용 방법

  • 웹 클라이언트가 서버측에 요청을 보내게되면 서버는 클라이언트를 식별하는 session id를 생성
  • 서버는 session id를 이용해서 key와 value를 이용한 저장소인 HttpSession을 생성
  • 서버는 session id를 저장하고 있는 쿠키를 생성하여 클라이언트에 전송
  • 클라이언트는 서버측에 요청을 보낼 때 session id를 가지고 있는 쿠키를 전송
  • 서버는 쿠키에 있는 session id를 이용해서 그 전 요청에서 생성한 HttpSession을 찾고 사용

세션 생성 및 얻기

HttpSession session = request.getSession();
HttpSession session = request.getSession(true);
  • request의 getSession() 메서드는 서버에 생성된 세션이 있다면 세션을 반환하고 없다면 새롭게 세션을 생성하여 반환한다.
  • 새롭게 생성된 세션인지는 HttpSession이 갖고있는 isNew() 메서드를 통해 알 수 있다.
HttpSession session = request.getSession(false);
  • request의 getSession() 메서드에 파라미터로 false를 전달하면, 이미 생성된 세션이 있다면 반환하고 없으면 null을 반환한다.

세션에 값 저장

setAttribute(String name, Object value)
  • name과 value의 쌍으로 객체 Object를 저장하는 메서드이다.
  • 세션이 유지되는 동안 저장할 자료를 저장한다.
session.setAttribute(이름,)

세션 값 조회

getAttribute 메서드

  • 세션에 저장된 자료는 다시 getAttribute(String name) 메서드를 이용해 조회한다.
  • 반환 값은 Object 유형이므로 저장된 객체로 자료유형 변환이 필요하다.
  • 메서드 setAttribute()에 이용한 name인 "id"를 알고 있다면 다음과 같이 바로 조회한다.
String value = (String)session.getAttribute("id");

세션 값 삭제

  • removeAttribute(String name) 메서드
    • name 값에 해당하는 세션 정보를 삭제한다.
  • invalidate() 메서드
    • 모든 세션 정보를 삭제한다.

javax.servlet.http.HttpSession

|반환형|메서드 이름|메서드 기능|
|:---:|---------|---------|
|long|getCreationTime()|세션의 생성된 시각을 1/1000초단위로 반환
(1970년 1월 1일 0시 0분 0초 GMT 기준)|
|String|getId()|세션에 할당된 유일한 식별자(ID)를 String 타입으로 반환|
|int|getMaxInactiveInterval()|현재 생성된 세션을 유지하기 위해 설정된 최대 시간을 초의 정수형으로 반환.
지정하지 않으면 기본 값은 1800초(30분)이며 기본 값도 서버에서 설정 가능.|
|Object|getAttribute(String name)|name이란 이름에 해당되는 속성값을 Object 타입으로 반환.
해당되는 이름이 없을 경우에는 null을 반환|
|Enumeration|getAttributeNames()|속성의 이름들을 Enumeration 타입으로 반환|
|void|invalidate()|현재 생성된 세션을 무효화 시킴|
|void|removeAttribute(String name)|name으로 지정한 속성의 값을 제거|
|void|setAttribute(String name, Object value)|name으로 지정한 이름에 value 값을 할당|
|void|setMaxInactiveInterval(int interval)|세션의 최대 유지시간을 초 단위로 설정|
|boolean|isNew()|세션이 새로 만들어졌으면 true, 이미 만들어진 세션이면 false 반환|

세션은 클라이언트가 서버에 접속하는 순간 생성

  • 특별히 지정하지 않으면 세션의 유지 시간은 기본 값으로 30분 설정
  • 세션의 유지 시간이란 서버에 접속한 후 서버에 요청을 하지 않는 최대 시간
  • 30분 이상 서버에 전혀 반응을 보이지 않으면 세션이 자동으로 끊어짐
  • 이 세션 유지 시간은 web.xml 파일에서 설정 가능
<session-config>
  <session-timeout>30</session-timeout>
</session-config>
profile
Study Enjoy Love

0개의 댓글