세션

지환·2023년 12월 30일
0

그룹웨어

목록 보기
1/17

출철 | https://sh77113.tistory.com/243

세션은 클라이언트 별로 서버에 저장되는 정보이다.

사용자 컴퓨터에 저장되던 쿠키와 다르게 서버에 저장되므로, 비교적 보안이 필요한 데이터는 쿠키보다 세션에 저장한다.

서버가 종료되거나 유효시간이 지나면 사라진다.


1. 세션 이용 방법

웹 클라이언트가 서버에 요청을 보내면, 서버는 다음 동작을 실시한다.

  1. 클라이언트를 식별하는 Session id를 생성한다.

  2. Session id로 key와 value를 저장하는 HttpSession을 생성한다.

  3. Session id를 저장하고 있는 쿠키를 생성하여 -> 클라이언트에 전송한다.

  • 클라이언트측은 서버측에 요청을 보낼 때, Session id를 가지고 있는 쿠키를 전송한다.

  • 서버는 쿠키의 Session id로 HttpSession을 찾는다.

1) 세션 생성 및 얻기

HttpSession session = request.getSession();
HttpSession session = request.getSession(true);

request의 getSession() 메서드는 서버에 생성된 세션이 있다면 세션을 반환하고, 없다면 새 세션을 생성하여 반환한다. (인수 default가 true)

새롭게 생성된 세션인지는 HttpSession의 isNew() 메서드로 알 수 있다.

HttpSession session = request.getSession(false);

request의 getSession()메서드의 파라미터로 false를 전달하면, 이미 생성된 세션이 있을 때 그 세션을 반환하고, 없으면 null을 반환한다.

2) 세션에 값 저장하기

setAttribute(String name, Object value)

setAttribute는 name, value 쌍으로 객체 Object를 저장하는 메서드다.

세션이 유지되는 동안 저장된다.

session.setAttribute(이름,)

이렇게 사용할 수 있다.

3) 세션 값 조회하기

getAttribute(String name)

getAttribute 메서드로 세션에 저장된 값을 조회할 수 있다.

리턴 타입은 Object이므로 형변환이 필요하다.

메서드 setAttribute에 이용한 name을 알고 있으면 다음과 같이 조회할 수 있다.

String valeu = (String)session.getAttribute("name");

4) 세션 값 삭제하기

removeAttribute(String name)

removeAttribute 메서드로 name 값에 해당하는 세션 정보를 삭제할 수 있다.

invalidate()

invalidate로 모든 세션 정보를 한 번에 삭제할 수 있다.

5) 세션 유지 시간 설정하기

기본적으로 세션은 30분 유지된다.

세션 유지 시간은 서버에 접속한 후 서버에 요청을 하지 않는 최대 시간을 말한다.

30분 이상 서버에 전혀 반응을 보이지 않으면, 세션이 자동으로 끊어진다.

이 세션 유지 시간은 web.xml 파일에서 설정할 수 있다.

<session-config>
  <session-timeout>30</session-timeout>
</session-config>
 
profile
아는만큼보인다.

0개의 댓글