📅  最后修改于: 2023-12-03 15:32:25.713000             🧑  作者: Mango
JSP 是在服务器端执行的 Java Servlet,它可以生成 HTML 页面,它会把 Servlet 的所有内置对象都包含进来,而这些内置对象又被称作隐式对象。其中一个非常重要的内置对象就是 会话(session)。在 JSP 页面中,可以使用隐式对象 session
来管理会话。
一个 Web 应用程序需要跟踪用户登录信息和其他一些状态 —— 例如购物车、浏览器历史记录、最近的搜索项等等。会话就是解决这些问题的一种技术。
会话可以看作是一种服务器到客户端数据的存储方式,在客户端保持了一个会话 ID。当用户访问浏览器上的 Web 应用时,应用可能会在服务器端为该用户创建一个会话,并将会话 ID 发送到客户端,然后由客户端存储。
这样,当用户再次访问该应用时,客户端会将会话 ID 发到服务器端,服务器会查找并加载之前的会话。通过此种方式可以在 Web 应用程序的操作之间跟踪用户状态和信息。
在 JSP 中,可以使用隐式对象 session
来管理会话。session
对象可以用来储存和获取数据,用于在浏览器和服务器之间跟踪客户端状态,类似于 cookie,但是存储在服务器端,相对更安全。
下面的代码会在会话中存储一个名为 name
的属性:
<%
// 取得 session 对象
HttpSession session = request.getSession();
// 将属性存储在 session 中
session.setAttribute("name", "Jack");
%>
通过以下代码,可以从 session 中获取名为 name
的属性:
<%
// 取得 session 对象
HttpSession session = request.getSession();
// 获取 session 中存储的属性
String name = (String) session.getAttribute("name");
%>
以上代码将把值 “Jack” 存储在 name
属性中。在随后的页面访问中,可以通过相同的方式从 session
对象中获取和更新属性。除了 setAttribute()
和 getAttribute()
方法,还有很多其他的方法可以用于管理会话。例如,以下方法用于获取会话 ID:
<%
// 取得 session 对象
HttpSession session = request.getSession();
// 获取会话 ID
String sessionId = session.getId();
%>
默认情况下,Session 对象的有效期为 30 分钟。如果在此期间用户没有任何交互,那么会话将自动失效并被销毁。当会话失效时,所有与之相关的属性都会被删除。可以通过以下代码修改默认的会话超时时间:
<%
// 取得 session 对象
HttpSession session = request.getSession();
// 设置会话超时为 60 分钟
session.setMaxInactiveInterval(60 * 60); // 单位为秒
%>
通过使用隐式对象 session
,可以创建和管理会话,从而在应用程序和客户端之间跟踪用户状态和信息。在 JSP 中使用 session
对象非常方便,因为不需要手动管理会话 ID 和状态,所有这些都由 JSP 引擎自动处理。