Servlet学习总结二

短命女 2022-05-28 13:54 309阅读 0赞
  1. Servlet Session技术

    1. 获取Session方法:
  1. HttpSession session = request,getSession();
  2. HttpSession对象可用的几个重要的方法















































1 public Object getAttribute(String name)
该方法返回在该 session 会话中具有指定名称的对象,如果没有指定名称的对象,则返回 null。
2 public Enumeration getAttributeNames()
该方法返回 String 对象的枚举,String 对象包含所有绑定到该 session 会话的对象的名称。
3 public long getCreationTime()
该方法返回该 session 会话被创建的时间,自格林尼治标准时间 1970 年 1 月 1 日午夜算起,以毫秒为单位。
4 public String getId()
该方法返回一个包含分配给该 session 会话的唯一标识符的字符串。
5 public long getLastAccessedTime()
该方法返回客户端最后一次发送与该 session 会话相关的请求的时间自格林尼治标准时间 1970 年 1 月 1 日午夜算起,以毫秒为单位。
6 public int getMaxInactiveInterval()
该方法返回 Servlet 容器在客户端访问时保持 session 会话打开的最大时间间隔,以秒为单位。
7 public void invalidate()
该方法指示该 session 会话无效,并解除绑定到它上面的任何对象。
8 public boolean isNew()
如果客户端还不知道该 session 会话,或者如果客户选择不参入该 session 会话,则该方法返回 true。
9 public void removeAttribute(String name)
该方法将从该 session 会话移除指定名称的对象。
10 public void setAttribute(String name, Object value) 
该方法使用指定的名称绑定一个对象到该 session 会话。
11 public void setMaxInactiveInterval(int interval)
该方法在 Servlet 容器指示该 session 会话无效之前,指定客户端请求之间的时间,以秒为单位。

删除 Session 会话数据

当您完成了一个用户的 session 会话数据,您有以下几种选择:

  • 移除一个特定的属性:您可以调用 public void removeAttribute(String name) 方法来删除与特定的键相关联的值。
  • 删除整个 session 会话:您可以调用 public void invalidate() 方法来丢弃整个 session 会话。
  • 设置 session 会话过期时间:您可以调用 public void setMaxInactiveInterval(int interval) 方法来单独设置 session 会话超时。
  • 注销用户:如果使用的是支持 servlet 2.4 的服务器,您可以调用 logout 来注销 Web 服务器的客户端,并把属于所有用户的所有 session 会话设置为无效。
  • web.xml 配置:如果您使用的是 Tomcat,除了上述方法,您还可以在 web.xml 文件中配置 session 会话超时,如下所示:

    1. <session-timeout>15</session-timeout>

上面实例中的超时时间是以分钟为单位,将覆盖 Tomcat 中默认的 30 分钟超时时间。

在一个 Servlet 中的 getMaxInactiveInterval() 方法会返回 session 会话的超时时间,以秒为单位。所以,如果在 web.xml 中配置 session 会话超时时间为 15 分钟,那么 getMaxInactiveInterval() 会返回 900。

  1. 简单实例:
  2. package TestServlet;
  3. import java.io.IOException;
  4. import java.io.PrintWriter;
  5. import java.text.SimpleDateFormat;
  6. import java.util.Date;
  7. import javax.servlet.ServletException;
  8. import javax.servlet.annotation.WebServlet;
  9. import javax.servlet.http.HttpServlet;
  10. import javax.servlet.http.HttpServletRequest;
  11. import javax.servlet.http.HttpServletResponse;
  12. import javax.servlet.http.HttpSession;
  13. /**
  14. * Servlet implementation class SessionTrack
  15. */
  16. @WebServlet("/SessionTest")
  17. public class TestSession extends HttpServlet {
  18. private static final long serialVersionUID = 1L;
  19. public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  20. // 如果不存在 session 会话,则创建一个 session 对象
  21. HttpSession session = request.getSession(true);
  22. // 获取 session 创建时间
  23. Date createTime = new Date(session.getCreationTime());
  24. // 获取该网页的最后一次访问时间
  25. Date lastAccessTime = new Date(session.getLastAccessedTime());
  26. //设置日期输出的格式
  27. SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  28. String title = "Session Test";
  29. Integer visitCount = new Integer(0);
  30. String visitCountKey = new String("visitCount");
  31. String userIDKey = new String("userID");
  32. String userID = new String("Runoob");
  33. // 检查网页上是否有新的访问者
  34. session.setAttribute(visitCountKey, visitCount);
  35. if (session.isNew()) {
  36. title = "Servlet Session Test First";
  37. session.setAttribute(userIDKey, userID);
  38. } else {
  39. visitCount = (Integer) session.getAttribute(visitCountKey);
  40. visitCount = visitCount + 1;
  41. userID = (String) session.getAttribute(userIDKey);
  42. session.setAttribute(visitCountKey, visitCount);
  43. }
  44. // 设置响应内容类型
  45. response.setContentType("text/html;charset=UTF-8");
  46. PrintWriter out = response.getWriter();
  47. String docType = "<!DOCTYPE html>\n";
  48. out.println(docType +
  49. "<html>\n" +
  50. "<head><title>" + title + "</title></head>\n" +
  51. "<body bgcolor=\"#f0f0f0\">\n" +
  52. "<h1 align=\"center\">" + title + "</h1>\n" +
  53. "<h2 align=\"center\">Session 信息</h2>\n" +
  54. "<table border=\"1\" align=\"center\">\n" +
  55. "<tr bgcolor=\"#949494\">\n" +
  56. " <th>Session 信息</th><th>值</th></tr>\n" +
  57. "<tr>\n" +
  58. " <td>id</td>\n" +
  59. " <td>" + session.getId() + "</td></tr>\n" +
  60. "<tr>\n" +
  61. " <td>创建时间</td>\n" +
  62. " <td>" + df.format(createTime) +
  63. " </td></tr>\n" +
  64. "<tr>\n" +
  65. " <td>最后访问时间</td>\n" +
  66. " <td>" + df.format(lastAccessTime) +
  67. " </td></tr>\n" +
  68. "<tr>\n" +
  69. " <td>用户 ID</td>\n" +
  70. " <td>" + userID +
  71. " </td></tr>\n" +
  72. "<tr>\n" +
  73. " <td>访问统计:</td>\n" +
  74. " <td>" + visitCount + "</td></tr>\n" +
  75. "</table>\n" +
  76. "</body></html>");
  77. }
  78. }
  1. Servlet Cookie处理与JSP Cookie处理相似

    1. 见[JSP Cookie处理][JSP Cookie]

发表评论

表情:
评论列表 (有 0 条评论,309人围观)

还没有评论,来说两句吧...

相关阅读