📜  Servlet中的HttpSession

📅  最后修改于: 2021-01-09 12:44:58             🧑  作者: Mango

4)HttpSession接口

在这种情况下,容器为每个用户创建一个会话ID,容器使用该ID来标识特定用户.HttpSession对象可以用于执行两项任务:

  • 绑定对象
  • 查看和操作有关会话的信息,例如会话标识符,创建时间和上次访问时间。

如何获取HttpSession对象?

HttpServletRequest接口提供了两种获取HttpSession对象的方法:

  • public HttpSession getSession():返回与此请求关联的当前会话,或者如果该请求没有会话,则创建一个。
  • public HttpSession getSession(boolean create):返回与此请求关联的当前HttpSession,或者,如果没有当前会话且create为true,则返回一个新会话。

HttpSession接口的常用方法

  • public String getId():返回包含唯一标识符值的字符串。
  • public long getCreationTime():返回创建此会话的时间,以格林尼治标准时间1970年1月1日午夜以来的毫秒数为单位。
  • public long getLastAccessedTime():返回客户端最后一次发送与此会话相关联的请求的时间,以格林尼治标准时间1970年1月1日午夜以来的毫秒数为单位。
  • public void invalidate():使此会话无效,然后取消绑定到该会话的任何对象。

使用HttpSession的示例

在此示例中,我们在一个servlet的会话范围内设置属性,并从另一个servlet的会话范围获取该值。为了在会话范围内设置属性,我们使用了HttpSession接口的setAttribute()方法,并且为了获取属性,我们使用了getAttribute方法。

index.html


Name:

FirstServlet.java


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


public class FirstServlet extends HttpServlet {

public void doGet(HttpServletRequest request, HttpServletResponse response){
        try{

        response.setContentType("text/html");
        PrintWriter out = response.getWriter();
        
        String n=request.getParameter("userName");
        out.print("Welcome "+n);
        
        HttpSession session=request.getSession();
        session.setAttribute("uname",n);

        out.print("visit");
                
        out.close();

                }catch(Exception e){System.out.println(e);}
    }

}

SecondServlet.java


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

public class SecondServlet extends HttpServlet {

public void doGet(HttpServletRequest request, HttpServletResponse response)
        try{

        response.setContentType("text/html");
        PrintWriter out = response.getWriter();
        
        HttpSession session=request.getSession(false);
        String n=(String)session.getAttribute("uname");
        out.print("Hello "+n);

        out.close();

                }catch(Exception e){System.out.println(e);}
    }
    

}

web.xml





s1
FirstServlet



s1
/servlet1



s2
SecondServlet



s2
/servlet2