>  기사  >  Java  >  JAVA는 Servlet을 통해 JSP에서 세션 변수를 어떻게 작동합니까?

JAVA는 Servlet을 통해 JSP에서 세션 변수를 어떻게 작동합니까?

WBOY
WBOY앞으로
2023-05-02 17:34:131153검색

서블릿을 사용하여 세션 제어

세션 상태를 유지하는 것은 웹 애플리케이션을 개발할 때 반드시 직면해야 하는 문제입니다. 이 문제를 해결하는 방법에는 쿠키를 사용하거나 숨겨진 유형의 양식 필드를 직접 변경하는 등 여러 가지가 있습니다. 상태 정보는 URL 등에 추가되며 Servlet 자체는 세션 상태 유지를 지원하는 HttpSession 인터페이스를 제공합니다. 여기서는 주로 이 인터페이스를 기반으로 하는 세션 상태 관리를 소개합니다.

 Session은 HTTP 프로토콜의 한계를 채우기 위해 고안되었습니다. HTTP 프로토콜이 어떻게 작동하는지 참고하세요. 사용자가 요청하면 서버가 응답합니다. 클라이언트와 서버 간의 연결은 별개이고 불연속적입니다. HTTP 프로토콜은 서버가 사용자 요청을 추적할 수 있는 기능을 제공하지 않습니다. 서버가 사용자 요청에 대한 응답을 완료한 후에는 브라우저와의 연결을 계속 유지할 수 없습니다. 서버 측에서 각 요청은 독립적이므로 HTTP 프로토콜은 사용자가 여러 홈페이지 간에 전환할 때 서버가 그의 신원을 알 수 없습니다. Session의 등장은 이러한 한계를 보완하기 위한 것입니다. 세션을 사용하면 사용자가 여러 홈페이지 사이를 전환할 때 사용자 정보를 저장할 수 있습니다. 이로 인해 이전에는 불가능했던 많은 일이 훨씬 쉬워졌습니다.

  방문자가 특정 홈페이지에 접속한 후 나갈 때까지의 기간 동안 각 방문자는 별도의 세션을 받게 됩니다.
 Java Servlet은 Session의 기능을 구현하는 HttpSession 인터페이스를 정의합니다. Servlet에서 Session을 사용하는 과정은 다음과 같습니다.
  
 (1) 현재 정의된 세션이 없는 경우 HttpServletRequest의 getSession 메소드를 사용합니다. 세션을 새로 생성하려면 getSession(true)

  (2) 메소드를 사용할 수도 있습니다. 세션 변수를 작성합니다. HttpSession.setAttribute(name, value) 메소드를 사용하여 세션에 정보를 저장할 수 있습니다. HttpSession.putValue(name, value)를 사용할 수도 있지만 이 메서드는 더 이상 사용되지 않습니다.

  (3) 세션 변수를 읽어옵니다. HttpSession.getAttribute(name) 메소드를 사용하여 세션의 변수 값을 읽을 수 있습니다. name이 정의되지 않은 변수인 경우 null이 반환됩니다. getAttribute에서 읽은 변수 유형은 Object이며 다음과 같이 강제 유형 변환을 사용해야 합니다.
  String uid = (String) session.getAttribute("uid");
 HttpSession.getValue( 이름), 하지만 이 방법도 구식입니다.

   (4) 세션을 종료한 후 session.invalidate() 메소드를 사용하여 세션을 종료할 수 있습니다. 그러나 이것이 반드시 요구되는 것은 아닙니다. Servlet 엔진은 일정 시간이 지나면 자동으로 Seesion을 닫기 때문입니다.

 다음은 session 사용을 보여주는 간단한 예입니다
   // SessionExample.java
  import java.io.*;
 import java.util.*;
 import javax.servlet.*;
 import javax.servlet. http.*;
  //필요한 소프트웨어 패키지 가져오기
 public 클래스 SessionExample은 HttpServlet을 확장합니다
 {
  public void doGet(HttpServletRequest 요청, HttpServletResponse 응답)
  throws IOException, ServletException //doGet 메서드 구현
  {
  response.setContentType(" text/html "); //HTTP 헤더 설정
   PrintWriter out = response.getWriter(); //출력 Writer 가져오기
  HttpSession session = request.getSession(true);
              //세션 개체 가져오기

   //인쇄 HTML 태그

  out.println("");
  out.println("");
  out.println("");
 out.println("");
  out.println("");

  날짜 Created = new Date( session.getCreationTime());

          //세션 객체가 생성된 시간 가져오기
   액세스된 날짜 = new Date(session.getLastAccessedTime());
           //     out.print ln("ID " + session.getId()+" ");
          //세션 ID를 가져와서 인쇄하세요
   out.println("Created: " +created+" ");
                 out.println(("생성됨: " + 생성됨+" ");
             /// st 액세스됨: " + 액세스됨+" ");
      //마지막 액세스 시간을 인쇄하세요

   session.setAttribute("UID","12345678");
    //세션에 변수 UID=12345678 추가
   session.setAttribute("이름","Tom");
     //변수 이름 추가 =톰이 세션 중


   Enumeration e = session.getAttributeNames();
        //세션 내 변수 이름의 열거 객체 가져오기
   while (e.hasMoreElements()) { //각 변수를 탐색
    String //Get 이름 먼저
   문자열 값 = session.getAttribute (name).toString () ); //HTML 마크업 인쇄
  out.println("");
   }
  }
 }



위 내용은 JAVA는 Servlet을 통해 JSP에서 세션 변수를 어떻게 작동합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 yisu.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제