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

반환형메서드 이름메서드 기능
longgetCreationTime()세션의 생성된 시각을 1/1000초단위로 반환
(1970년 1월 1일 0시 0분 0초 GMT 기준)
StringgetId()세션에 할당된 유일한 식별자(ID)를 String 타입으로 반환
intgetMaxInactiveInterval()현재 생성된 세션을 유지하기 위해 설정된 최대 시간을 초의 정수형으로 반환.
지정하지 않으면 기본 값은 1800초(30분)이며 기본 값도 서버에서 설정 가능.
ObjectgetAttribute(String name)name이란 이름에 해당되는 속성값을 Object 타입으로 반환.
해당되는 이름이 없을 경우에는 null을 반환
EnumerationgetAttributeNames()속성의 이름들을 Enumeration 타입으로 반환
voidinvalidate()현재 생성된 세션을 무효화 시킴
voidremoveAttribute(String name)name으로 지정한 속성의 값을 제거
voidsetAttribute(String name, Object value)name으로 지정한 이름에 value 값을 할당
voidsetMaxInactiveInterval(int interval)세션의 최대 유지시간을 초 단위로 설정
booleanisNew()세션이 새로 만들어졌으면 true, 이미 만들어진 세션이면 false 반환

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

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

0개의 댓글