04 JSP 세션 관리_HTTPSession

● 세션 관리를 위한 정보를 웹 서버가 생성하고 보관하여 관리

1.     HttpSession의 동작

HttpSession은 기본적으로 요청을 보내는 하나의 웹 브라우저에 하나의 세션 아이디를 부여하고 웹 컨테이너에서 해당 세션 아이디를 보관

○ 하나의 컴퓨터 내에서 두 개의 웹 브라우저를 통해 동일한 웹 페이지에 접근하더라도 각각의 웹 브라우저는 다른 세션 아이디를 부여 받아 각각의 세션이 유지

○ 웹 컨테이너가 직접 생성하고 유지

1)    웹 컨테이너는 세션 아이디를 생성하여 부여

2)    생성된 세션 아이디는 웹 클라이언트와 웹 서버 양측 모두 임시 저장

3)    웹 클라이언트는 다시 서비스 요청(접속) 시 보유하고 있던 세션 아이디를 함께 전송

4)    웹 서버는 세션 아이디가 저장된 메모리를 검색하여 유효한 세션 아이디인지 구분

5)    웹 컨테이너에 보관된 세션 아이디는 유효기간 만료 시 소멸

 

2.     session 내장객체 사용

page 지시자의 session 속성을 true로 지정해야 되지만 생략도 가능

<%@ page session=”true" %>

1)    세션 내 속성 지정

■ 세션 아이디 : 웹 클라이언트가 웹 브라우저를 통해 웹 서버에 접근할 때 생성되는 고유의 값 -> 웹 컨테이너가 접속한 웹 브라우저를 구별하기 위해 직접 보관

매번 새로운 값으로 생성되어 할당됨 -> 세션 아이디 외에 사용자 구분을 위한 고정적인 데이터가 필요 -> 일반적으로 웹 서비스에서 사용되는 로그인 아이디가 이러한 데이터의 대표적인 예

setAttribute( ) 메서드 : 속성 지정하고 세션의 속성값을 이용하여 필요한 데이터를 저장

session.setAttribute("ID", "TestID”)

ID 속성의 속성 값 TestID를 지정 -> 이 것으로 이 사용자인지 확인하는 거지

getAttribute( ) 메서드 : 해당 속성 값 출력 -> 저장한 데이터를 열람

<%=session.getAttribute(“TestID") %>

removeAttribute() 메서드 : 속성 삭제

세션에 설정된 속성만을 제거 (세션 아이디에는 영향 X ->웹 서버 클라이언트 간 연결 유지에는 영향 없음)

session.removeAttribute(“TestID")

 

2)    세션의 유효시간

setMaxInactiveInterval( ) 메서드 : 현재 세션 아이디의 최대 유효시간 설정

■ 설정한 세션의 최대 유효시간이 지나면 최초 접속 시 할당된 세션이 무효화되고, 다시 세션 연결이 확립되어야 함 -> 세션이 만료되면 재 로그인 필요

■ 세션이 만료될 경우 세션에 지정된 속성들도 함께 소멸됨

-> if문과 같은 조건문을 사용하여 로그인 한 아이디의 존재 여부에 따라 다시 로그인을 요청하는 등의 기능 구현이 가능

 

3)    세션의 종료

■ 세션의 최대 유효시간 설정은 일정 시간 이후 세션의 자동 종료 기능 구현에 적합

-> 즉시 세션을 해제해야 하는 로그아웃과 같은 기능 구현에는 적합하지 않음

■ 웹 브라우저의 종료 여부와 관계없이 세션을 즉시 종료시키기 위해서는 session 내장객체에서 제공하는 invalidate 메서드를 사용

invalidate 메서드 : 웹 클라이언트가 부여 받은 현재 세션의 즉시 종료를 수행

기존 세션에 담겨있던 속성 및 데이터들은 함께 소멸

-- SessionlnvalidateResult.jsp -- SessionInvalidatePerform.jsp에 세션 종료 코드 있겠지

<form action=”SessionInvalidatePerform.jsp" method=”post">

<input type=usubmit" value="세션 종료”>

</form>

-- SessionInvalidatePerform.jsp –

<%

if (session != null)

session.invalidate( );

response.sendRedirect ("http: //localhost 8080/Chap08/SessionlnvalidateResult.jsp")

%>

세션 종료 시킨 다음 원 페이지로 리다이렉트!

 

 

'JSP > 이론' 카테고리의 다른 글

[JSP][이론]06 데이터베이스 프로그래밍  (0) 2020.09.07
[JSP][이론]05 JSP 액션 태그  (0) 2020.09.07
[JSP][이론]04 JSP 세션 관리_쿠키  (0) 2020.09.05
[JSP][이론] 02 JSP 기초  (0) 2020.09.05
[JSP][이론] 01.서블릿  (0) 2020.09.04

+ Recent posts