서블릿에서 세션 관리 개발

이 태스크 정보

코딩 예 SessionSample.java와 결합된 이 정보는 사용자 고유의 서블릿에서 세션을 구현할 수 있는 프로그래밍 모델을 제공합니다.

프로시저

  1. HttpSession 오브젝트 확보

    세션을 확보하려면 Java™ 서블릿 3.0 API에 있는 javax.servlet.http.HttpServletRequest 오브젝트의 getSession 메소드를 사용하십시오.

    처음 HttpSession 오브젝트를 확보할 때, 세션 관리는 세 가지 방법(쿠키, URL 재작성 또는 SSL(Secure Socket Layer) 정보) 중 하나를 사용하여 세션 추적을 설정합니다.
    제거된 기능 제거된 기능: SSL ID를 사용하는 세션 추적은 WebSphere® Application Server 버전 7.0에서 더 이상 사용되지 않습니다. 쿠키를 사용하도록 세션 추적을 구성하거나 URL 재작성을 사용하도록 애플리케이션을 수정할 수 있습니다. depfeat

    세션 관리가 쿠키를 사용한다고 가정하십시오. 그러한 상황에서, 세션 관리는 고유한 세션 ID를 사용하며 일반적으로 이를 쿠키로 브라우저에 다시 전송합니다. 이 사용자의 각 후속 요청(같은 브라우저에서)은 세션 ID가 들어 있는 쿠키를 전달하며 세션 관리 기능은 사용자의 기존 HttpSession 오브젝트를 찾는 데 이 ID를 사용합니다.

    샘플 코드의 1단계에서는, HttpSession 오브젝트가 아직 존재하지 않는 경우 작성되도록 부울(작성)을 true로 설정합니다. (서블릿 2.3 API를 사용하는 경우, 부울이 없는 javax.servlet.http.HttpServletRequest.getSession() 메소드는 기본값이 true로 설정되며 이 사용자에 대해 세션이 아직 존재하지 않는 경우 세션을 작성합니다.)

  2. 세션에서 사용자 정의 데이터를 저장하고 검색하십시오.

    세션이 설정된 후에는 사용자 정의 데이터를 세션에 추가하거나 검색할 수 있습니다. HttpSession 오브젝트에는 임의의 Java 오브젝트를 추가, 검색 및 제거할 수 있는 메소드가 있으며 이는 java.util.Dictionary에 있는 메소드와 유사합니다.

    코드 예의 2단계에서, 서블릿은 HttpSession에서 정수 오브젝트를 읽어, 이를 늘리고 다시 기록합니다. 임의의 이름을 사용하여 HttpSession 오브젝트의 값을 식별할 수 있습니다. 코드 예는 이름 sessiontest.counter를 사용합니다.

    HttpSession 오브젝트가 사용자가 액세스할 수 있는 서블릿 사이에서 공유되므로, 충돌을 피하기 위해 사이트 전역의 이름 규칙 채택을 고려하십시오.

  3. (선택적) HttpSession 오브젝트의 데이터가 들어 있는 HTML 응답 페이지 출력
  4. 세션 중에 조치를 수행하는 사용자에게 피드백을 제공하십시오. 조치가 발생했음을 알리는 HTML 코드를 클라이언트 브라우저에 전달할 수 있습니다. 예를 들어, 코드 샘플의 3단계에서 서블릿은 사용자에게 리턴되는 웹 페이지를 생성하고 세션 중에 사용자가 해당 웹 페이지를 방문할 때마다 sessiontest.counter의 값을 표시합니다.
  5. (선택적) 리스너에게 알립니다. 세션이 종료하려고 준비하고 무효화할 때 javax.servlet.http.HttpSessionBindingListener 인터페이스를 구현하는 세션에 저장된 오브젝트를 알립니다. 이러한 통지로 사용자는 세션 중에 작성된 데이터 변경사항을 데이터베이스에 영구적으로 저장하는 등의 사후 세션 처리를 수행할 수 있습니다.
  6. 세션을 종료합니다. 다음을 사용하여 세션을 종료할 수 있습니다.
    • 지정된 시간 동안 세션이 활동하지 않으면 세션 관리 기능을 사용하여 자동으로 종료합니다. 관리자는 세션을 무효화시킨 후 경과된 시간을 지정하는 방법을 제공합니다.
    • 세션 오브젝트에서 서블릿을 코딩하여 invalidate() 메소드를 호출합니다.

import java.io.*;
import java.util.*;
import javax.Servlet.*;
import javax.servlet.http.*;


public class SessionSample  extends HttpServlet {
  public void doGet (HttpServletRequest request, HttpServletResponse response) 	  
       throws ServletException, IOException {


    // Step 1: Get the Session object
 
      boolean create = true;         
      HttpSession session = request.getSession(create);
 
   // Step 2: Get the session data value


      Integer ival = (Integer)              
      session.getAttribute ("sessiontest.counter");         
      if (ival == null) ival = new Integer (1);         
      else ival = new Integer (ival.intValue () + 1);           
      session.setAttribute ("sessiontest.counter", ival);       

   // Step 3: Output the page

      response.setContentType("text/html"); 
      PrintWriter out = response.getWriter(); 
      out.println("<html>");  
      out.println("<head><title>Session Tracking Test</title></head>");
      out.println("<body>");
      out.println("<h1>Session Tracking Test</h1>");
      out.println ("You have hit this page " + ival + " times" + "<br>");
      out.println ("Your " + request.getHeader("Cookie"));
      out.println("</body></html>");    
   }
}

주제 유형을 표시하는 아이콘 태스크 주제



시간소인 아이콘 마지막 업데이트 날짜: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=tprs_sesi
파일 이름:tprs_sesi.html