- ·上一篇文章:Servlet Cookie 处理
- ·下一篇文章:Servlet 数据库访问
Servlet Session 跟踪
; } session.setAttribute(visitCountKey, visitCount); // 设置响应内容类型 response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); String docType = "<!DOCTYPE html>\n"; out.println(docType + "<html>\n" + "<head><title>" + title + "</title></head>\n" + "<body bgcolor=\"
#f0f0f0\">\n" + "<h1 align=\"center\">" + title + "</h1>\n" + "<h2 align=\"center\">Session 信息</h2>\n" + "<table border=\"1\" align=\"center\">\n" + "<tr bgcolor=\"
#949494\">\n" + " <th>Session 信息</th><th>值</th></tr>\n" + "<tr>\n" + " <td>id</td>\n" + " <td>" + session.getId() + "</td></tr>\n" + "<tr>\n" + " <td>创建时间</td>\n" + " <td>" + df.format(createTime) + " </td></tr>\n" + "<tr>\n" + " <td>最后访问时间</td>\n" + " <td>" + df.format(lastAccessTime) + " </td></tr>\n" + "<tr>\n" + " <td>用户 ID</td>\n" + " <td>" + userID + " </td></tr>\n" + "<tr>\n" + " <td>访问统计:</td>\n" + " <td>" + visitCount + "</td></tr>\n" + "</table>\n" + "</body></html>"); }}编译上面的 Servlet SessionTrack,并在 web.xml 文件中创建适当的条目。<?xml version="1.0" encoding="UTF-8"?><web-app> <servlet> <!-- 类名 --> <servlet-name>SessionTrack</servlet-name> <!-- 所在的包 --> <servlet-class>com.k88.test.SessionTrack</servlet-class> </servlet> <servlet-mapping> <servlet-name>SessionTrack</servlet-name> <!-- 访问的网址 --> <url-pattern>/TomcatTest/SessionTrack</url-pattern> </servlet-mapping></web-app>在浏览器地址栏输入 http:
//localhost:
8080/TomcatTest/SessionTrack,当您第一次运行时将显示如下结果:再次尝试运行相同的 Servlet,它将显示如下结果:删除 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 会话超时,如下所示: <session-config> <session-timeout>15</session-timeout> </session-config>上面实例中的超时时间是以分钟为单位,将覆盖 Tomcat 中默认的 30 分钟超时时间。在一个 Servlet 中的 getMaxInactiveInterval() 方法会返回 session 会话的超时时间,以秒为单位。所以,如果在 web.xml 中配置 session 会话超时时间为 15 分钟,那么 getMaxInactiveInterval() 会返回 900。
#f0f0f0\">\n" + "<h1 align=\"center\">" + title + "</h1>\n" + "<h2 align=\"center\">Session 信息</h2>\n" + "<table border=\"1\" align=\"center\">\n" + "<tr bgcolor=\"
#949494\">\n" + " <th>Session 信息</th><th>值</th></tr>\n" + "<tr>\n" + " <td>id</td>\n" + " <td>" + session.getId() + "</td></tr>\n" + "<tr>\n" + " <td>创建时间</td>\n" + " <td>" + df.format(createTime) + " </td></tr>\n" + "<tr>\n" + " <td>最后访问时间</td>\n" + " <td>" + df.format(lastAccessTime) + " </td></tr>\n" + "<tr>\n" + " <td>用户 ID</td>\n" + " <td>" + userID + " </td></tr>\n" + "<tr>\n" + " <td>访问统计:</td>\n" + " <td>" + visitCount + "</td></tr>\n" + "</table>\n" + "</body></html>"); }}编译上面的 Servlet SessionTrack,并在 web.xml 文件中创建适当的条目。<?xml version="1.0" encoding="UTF-8"?><web-app> <servlet> <!-- 类名 --> <servlet-name>SessionTrack</servlet-name> <!-- 所在的包 --> <servlet-class>com.k88.test.SessionTrack</servlet-class> </servlet> <servlet-mapping> <servlet-name>SessionTrack</servlet-name> <!-- 访问的网址 --> <url-pattern>/TomcatTest/SessionTrack</url-pattern> </servlet-mapping></web-app>在浏览器地址栏输入 http:
//localhost:
8080/TomcatTest/SessionTrack,当您第一次运行时将显示如下结果:再次尝试运行相同的 Servlet,它将显示如下结果:删除 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 会话超时,如下所示: <session-config> <session-timeout>15</session-timeout> </session-config>上面实例中的超时时间是以分钟为单位,将覆盖 Tomcat 中默认的 30 分钟超时时间。在一个 Servlet 中的 getMaxInactiveInterval() 方法会返回 session 会话的超时时间,以秒为单位。所以,如果在 web.xml 中配置 session 会话超时时间为 15 分钟,那么 getMaxInactiveInterval() 会返回 900。
Servlet Session 跟踪