[JSP] Session 객체

hiyayeah·2023년 1월 8일
0

JSP

목록 보기
5/8

1. session 객체

  • JSP 에서 관리하는 내장 객체 중 하나로, HttpSession 타입으로 관리
  • 클라이언트와 서버 사이의 연결 정보에 대해 관리 역할을 수행하는 객체(= 가상의 연결)
  • 주로, 페이지와 관계없이 어떤 정보를 유지하는 용도로 사용
    • 로그인 후 아이디 정보를 기억하여 페이지 이동 시에도 로그인 상태가 유지되도록 함
    • 쇼핑몰 상품을 장바구니에 담은 후 페이지 이동 시에도 장바구니 목록이 유지되도록 함
  • 라이언트가 서버에 접속 시 기본적으로 해당 클라이언트에 해당하는 기억장소(= 세션)가 생성되고 자동으로 특수한 아이디(세션ID)값이 부여됨 → 주의) 로그인 등에 사용하는 아이디 개념이 아님
  • 세션 유지 시간(maxInactiveInterval 값) 값만큼 세션 정보가 유지되며 유지 시간동안 서버와 아무런 통신이 없을 경우 유지 시간 만료될 때 세션 정보 사라짐(= 제거)
    • 기본 maxInactiveInterval 값 : 1800(초) / 30분
  • 세션 유지 시간과 관계없이 session 객체의 invalidate( ) 메서드를 호출하면 세션 초기화. 또한, 웹브라우저 종료하면 세션이 초기화

2. session 객체에 값(데이터)을 저장하는 방법

: session.setAttribute("속성명", 속성값);

  • 첫번째 파라미터 : 저장할 값을 지정하는 이름(= 속성명 = 키) = 변수명 역할과 동일한 String 타입
  • 두번째 파라미터 : 세션 객체에 저장할 값(데이터) => 데이터 타입은 무관함
<%
session.setAttribute("sessionValue1", "첫번째 세션값입니다!");
// => "sessionValue1" 이라는 이름으로 "첫번째 세션값입니다!" 문자열을 저장

session.setAttribute("sessionValue2", "두번째 세션값입니다!");
// "sessionValue2" 라는 이름으로 "두번째 세션값입니다!" 문자열을 저장
%>

3. session 객체로부터 값(데이터) 꺼내는 방법

: session.getAttribute("데이터");

  • 파라미터 : 저장된 값을 지정하는 이름
세션에 저장된 값 : <%=session.getAttribute("sessionValue1") %>
세션에 저장된 값 : <%=session.getAttribute("sessionValue2") %>

4. session 객체의 값을 삭제하는 방법

4-1. session.removeAttribute("속성명")

<%
session.removeAttribute("sessionValue1");
// 세션 객체에 저장된 "sessionValue1" 이라는 이름의 세션 속성 제거(= 세션값 삭제)
session.removeAttribute("sessionValue2");
// 세션 객체에 저장된 "sessionValue2" 라는 이름의 세션 속성 제거(= 세션값 삭제)
%>

4-2. session.invalidate( ) 메서드를 호출하여 세션 전체 초기화

  • invalidate() 메서드 호출 후에는 새로운 세션 생성 전까지 세션 접근 불가
  • 다른 페이지로 이동하는 등의 작업 수행 시 새로운 세션 생성됨
<%
session.removeAttribute("sessionValue1");
// 세션 객체에 저장된 "sessionValue1" 이라는 이름의 세션 속성 제거(= 세션값 삭제)
session.removeAttribute("sessionValue2");
// 세션 객체에 저장된 "sessionValue2" 라는 이름의 세션 속성 제거(= 세션값 삭제)
%>

5. 부가적인 메서드

  • 새 세션 여부 : session.isNew()
  • 세션 ID : session.getId()
  • 세션 생성 시각 : new Date(session.getCreationTime())
  • 마지막 세션 접근 시각 : new Date(session.getLastAccessedTime())
<!-- 세션 기본 유지시간(maxInactiveInterval) 값 확인 -->
<%=session.getMaxInactiveInterval() %>

<!-- 세션 유지시간을 10초로 변경 -->
<%session.setMaxInactiveInterval(10); %>
<h3>현재 세션 유지시간 : <%=session.getMaxInactiveInterval() %></h3>

0개의 댓글