[Web][JSP] Session

포키·2023년 5월 3일
0

국비과정

목록 보기
57/73

★★★★★★★★★★세션 매우 중요!!!!!★★★★★★★★★★


Session

  • 클라이언트 상태를 서버에 저장
  • http 연결은 connectless, stateless
    (http 프로토콜 상에서는 연결이 유지되지 않고, 상태 정보도 남지 않음)
  • 웹 프로그램의 가장 큰 목적 중 하나가 '상태 유지'
    세션 혹은 세션+쿠키로 달성

세션은 필수, 쿠키는 선택사항

  • 구성1, 구성2 같은 의미
  • page 디렉토리에서 세션 사용 설정 (기본값 true)
<%@ page session="true" %>

session 기본 객체가 제공하는 세션 정보 관련 메서드

  • getId() : 세션의 고유ID를 반환 (return String)
  • getCreationTime() : 첫 요청 시간(ms) 반환 (return long)
  • getLastAccessedTime() : 마지막 요청 시간(ms) 반환 (return long)

웹 브라우저는 웹 서버에 연결할 때마다 매번 세션ID를 보내서 웹 서버가 어떤 세션을 사용할지 판단할 수 있게 한다. 브라우저와 세션ID를 공유하기 위해 사용하는 것이 바로 '쿠키'이다.
(쿠키 비허용이면 로그인 유지=세션 유지가 안 되는 이유)

기본 객체의 속성 사용

  • 세션은 지정한 유효시간 동안 유지
  • 웹 어플리케이션을 실행하는 동안 지속적으로 사용해야 하는 데이터를 session에 속성으로 저장

IO 중에서도 외부 자원에 접근하는 IO는 더 오래 걸림
자주 쓰는 값은 기본객체 application이나 session에 속성으로 넣는게 간단
(물론 메모리에 부담은 커지므로 잘 생각해서 결정하기)

왜 쿠키보다 세션인가?
보안 문제. 쿠키와 달리 세션은 값을 서버에만 저장하므로 더 안전
하지만 세션은 여러 서버, 여러 어플리케이션에서 공유할 수 없다.
(ex. www.naver.com과 mail.naver.com의 세션은 다름;
물리적으로 or 논리적으로 분리되었을 경우 공유할 수 없다.)
때문에 둘을 함께 사용

★ 세션 종료 ★

  • invalidate() : 현재 존재하는 세션 종료(무효화) 메서드 (=세션 기본객체 삭제)
  • invalidate를 사용하면 session은 invalidate()가 실행된 다음 요청부터 변경됨
    (사용한 시점에 바로 없어지지 않음)
  • invalidate()의 의미
    session 객체 삭제 (x)
    session 속성에 접근 불가 (o)
  • ★ 새 세션 바로 얻는 법 ★
    request.getSession()

    request.getSession(false) : invalidate되지않은 session이 존재하는 경우에만 session 반환

세션 유효시간

  • 기준 : getLastAccessedTime()
  • 설정법1 - web.xml에서 지정 (분단위)
	<session-config>
    	<session-timeout>50</session-timeout>
    </session-config>
  • 설정법2 - 페이지에서 코드로 지정 (초단위)
    setMaxInactiveInterval()

기본객체에서 값 구하기 방법
request로 세션 구하기. 세션에서 어플리케이션 구하기

profile
welcome

0개의 댓글