Servlet会话追踪(HttpSession接口)

  1. HttpSession接口
  2. 如何获取HttpSession对象
  3. HttpSession接口的常用方法
  4. 使用HttpSession的示例
在这种情况下, 容器为每个用户创建一个会话ID。容器使用该ID来标识特定用户.HttpSession的对象可用于执行两项任务:
  1. 绑定对象
  2. 查看和操作有关会话的信息, 例如会话标识符, 创建时间和上次访问时间。
Servlet会话追踪(HttpSession接口)

文章图片
如何获得HttpSession对象?
HttpServletRequest接口提供了两种方法来获取HttpSession的对象:
  1. public HttpSession getSession():返回与此请求关联的当前会话, 或者如果该请求没有会话, 则创建一个。
  2. public HttpSession getSession(boolean create):返回与此请求关联的当前HttpSession;如果没有当前会话且create为true, 则返回一个新会话。
HttpSession接口的常用方法
  1. public String getId():返回包含唯一标识符值的字符串。
  2. public long getCreationTime():返回创建此会话的时间, 以格林尼治标准时间1970年1月1日午夜以来的毫秒数为单位。
  3. public long getLastAccessedTime():返回客户端最后一次发送与此会话相关联的请求的时间, 以格林尼治标准时间1970年1月1日午夜以来的毫秒数为单位。
  4. public void invalidate():使此会话无效, 然后取消绑定到该会话的任何对象。
使用HttpSession的示例
在此示例中, 我们在一个servlet的会话范围内设置属性, 并从另一个servlet的会话范围获取该值。为了在会话范围内设置属性, 我们使用了HttpSession接口的setAttribute()方法, 并且为了获取属性, 我们使用了getAttribute方法。
index.html
< form action="servlet1"> Name:< input type="text" name="userName"/> < br/> < input type="submit" value="http://www.srcmini.com/go"/> < /form>

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("< a href='http://www.srcmini.com/servlet2'> visit< /a> "); 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
< web-app> < servlet> < servlet-name> s1< /servlet-name> < servlet-class> FirstServlet< /servlet-class> < /servlet> < servlet-mapping> < servlet-name> s1< /servlet-name> < url-pattern> /servlet1< /url-pattern> < /servlet-mapping> < servlet> < servlet-name> s2< /servlet-name> < servlet-class> SecondServlet< /servlet-class> < /servlet> < servlet-mapping> < servlet-name> s2< /servlet-name> < url-pattern> /servlet2< /url-pattern> < /servlet-mapping> < /web-app>

下载此示例(使用Myeclipse IDE开发)
下载此示例(使用Eclipse IDE开发)
【Servlet会话追踪(HttpSession接口)】下载此示例(使用Netbeans IDE开发)

    推荐阅读