Servlet 中的HttpSession

来源:这里教程网 时间:2026-02-17 21:38:13 作者:

Servlet 中的HttpSession,HttpSession对象用于会话管理。会话包含特定于整个应用中的特定用户的信息。当用户第一次通过request.getSession()获得HttpSession时进入网站(或在线应用)时,将为用户提供唯一 ID 以标识其会话。此唯一 ID 可以存储在 cookie 或请求参数中。

HttpSession保持活动状态,直到它的使用时间超过部署描述符文件(web.xml)中标签中指定的超时值。默认超时值为 30 分钟,如果未在标记中指定值,则使用此值。这意味着当用户未访问指定的 Web 应用时间时,会话将被 servlet 容器销毁。后续请求将不再从此会话提供,servlet 容器将创建新会话。

这是您创建HttpSession对象的方法。

protected void doPost(HttpServletRequest req,    HttpServletResponse res)    throws ServletException, IOException {        HttpSession session = req.getSession();}

您可以使用setAttribute()方法将用户信息存储到会话对象中,稍后在需要时可以从会话中获取此信息。这是您在会话中存储信息的方式。这里我们分别在属性名称为uName,uemailId和uAge的会话中存储用户名,emailid和userage。

session.setAttribute("uName", "ChaitanyaSingh");session.setAttribute("uemailId", "[email protected]");session.setAttribute("uAge", "30");

第一个参数是属性名称,第二个是属性值。对于例如uName是属性名称,ChaitanyaSingh是上面代码中的属性值。

要从会话中获取值,我们使用HttpSession接口的getAttribute()方法。这里我们使用属性名称获取属性值。

String userName = (String) session.getAttribute("uName");String userEmailId = (String) session.getAttribute("uemailId");String userAge = (String) session.getAttribute("uAge");

HttpSession的方法

public void setAttribute(String name,Object value):使用名称绑定对象,并将名称/值对存储为 HttpSession 对象的属性。如果属性已存在,则此方法将替换现有属性。

public Object getAttribute(String name):从会话对象返回参数中指定的String对象。如果未找到指定属性的对象,则getAttribute()方法返回null。

public Enumeration getAttributeNames():返回一个Enumeration,其中包含作为会话对象的属性绑定的所有对象的名称。

public void removeAttribute(String name):从会话中删除给定的属性。

setMaxInactiveInterval(int interval):以秒为单位设置会话不活动时间。这是以秒为单位的时间,指定自客户端上次收到请求后会话保持活动状态的时间。

会话示例

index.html

<form action="login">  User Name:<input type="text" name="userName"/><br/>  Password:<input type="password" name="userPassword"/><br/>  <input type="submit" value="submit"/></form>

MyServlet1.java

import java.io.*;import javax.servlet.*;import javax.servlet.http.*;public class MyServlet1 extends HttpServlet {   public void doGet(HttpServletRequest request, HttpServletResponse response){     try{      response.setContentType("text/html");      PrintWriter pwriter = response.getWriter();      String name = request.getParameter("userName");      String password = request.getParameter("userPassword");      pwriter.print("Hello "+name);      pwriter.print("Your Password is: "+password);      HttpSession session=request.getSession();      session.setAttribute("uname",name);      session.setAttribute("upass",password);      pwriter.print("<a href='welcome'>view details</a>");      pwriter.close();    }catch(Exception exp){       System.out.println(exp);     }  }}

MyServlet2.java

import java.io.*;import javax.servlet.*;import javax.servlet.http.*;public class MyServlet2 extends HttpServlet {  public void doGet(HttpServletRequest request, HttpServletResponse response){  try{      response.setContentType("text/html");      PrintWriter pwriter = response.getWriter();      HttpSession session=request.getSession(false);      String myName=(String)session.getAttribute("uname");      String myPass=(String)session.getAttribute("upass");      pwriter.print("Name: "+myName+" Pass: "+myPass);      pwriter.close();  }catch(Exception exp){      System.out.println(exp);   }  }}

web.xml

<web-app><servlet>   <servlet-name>Servlet1</servlet-name>   <servlet-class>MyServlet1</servlet-class></servlet><servlet-mapping>   <servlet-name>Servlet1</servlet-name>   <url-pattern>/login</url-pattern></servlet-mapping><servlet>   <servlet-name>Servlet2</servlet-name>   <servlet-class>MyServlet2</servlet-class></servlet><servlet-mapping>   <servlet-name>Servlet2</servlet-name>   <url-pattern>/welcome</url-pattern></servlet-mapping></web-app>

输出:

第一个界面:

点击提交后:

点击查看详细信息后:

相关推荐