Session 跟踪
我们知道 HTTP 协议是无状态的。为了跟踪用户的操作状态,JSP 使用一个叫 HttpSession 的对象实现同样的功能。
HttpSession 是一个建立在 cookies 和 URL-rewriting 上的高质量的界面。Session 的信息保存在服务器端,Session 的 id 保存在客户机的 cookie 中。事实上,在许多服务器上,如果浏览器支持的话它们就使用 cookies,但是如果不支持或废除了的话就自动转化为 URL-rewriting,session 自动为每个流程提供了方便地存储信息的方法。
Session 一般在服务器上设置了一个 30 分钟的过期时间,当客户停止活动后自动失效。
Session 中保存和检索的信息不能是基本数据类型如 int、double 等,而必须是 Java 的相应的对象,如 Integer、Double。
HttpSession API
| 方法 | 说明 |
|---|---|
getId() | 返回唯一的标识,这些标识为每个 session 而产生。当只有一个单一的值与一个 session 联合时,或当日志信息与先前的 sessions 有关时,它被当作键名用 |
getCreationTime() | 返回 session 被创建的时间。最小单位为毫秒 |
getLastAccessedTime() | 返回 session 最后被客户发送的时间。最小单位为千分之一秒 |
getMaxInactiveInterval() | 返回总时间(秒),负值表示 session 永远不会超时 |
getAttribute() | 取一个与 session 相联系的信息 |
setAttribute() | 提供一个关键词和一个值。会替换掉任何以前的值 |
示例代码
首先是 index.jsp 里面:
<body>
<%
session.setAttribute("site", new String("www.bamn.cn"));
%>
</body>
</html>Code language: HTML, XML (xml)
然后是在 second.jsp 里面:
<body>
<%
String site = (String) session.getAttribute("site");
out.println("从 session 里取出的值为:" + site);
%>
</body>
</html>Code language: HTML, XML (xml)
然后先访问 index.jsp 再访问 second.jsp。
Previous: JSP 注释
Next: JSP 中的流程控制语句