본문 바로가기
카테고리 없음

02. 상태정보 유지기술(Session)

by Backchus 2019. 9. 3.

세션이란?

정의

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

이용방법

세션 생성 및 얻기

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

세션에 값 저장

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

 

세션에 값 조회

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

세션에 값 삭제

  • removeAttributer(String name)메소드
    • name값에 해당하는 세션 정보를 삭제합니다.
  • invalidate() 메소드
    • 모든 세션 정보를 삭제합니다.

javax.servlet.http.HttpSession

반환형 메소드 이름 메소드 기능
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파일에서 설정 가능합니다.

참고자료: https://www.edwith.org/boostcourse-web/lecture/16801/

 

[LECTURE] 4) Session이란? : edwith

들어가기 전에 이번 시간엔 자바 웹 어플리케이션에서 세션을 사용하는 방법에 대해 알아보도록 하겠습니다.     학습 목표 세션을 이용하는 방법에 대해 이해합니다. javax.ser... - 부스트코스

www.edwith.org