目录
Session 的作用与工作原理
在 JSP 中,Session(会话)通过 session
隐式对象(javax.servlet.http.HttpSession
)管理,用于在多个请求之间跟踪用户状态。Session 数据存储在服务器端,通过唯一的 Session ID(通常以 Cookie 或 URL 重写形式传递)与客户端关联,常用于保存登录信息、购物车数据等。
在 JSP 中操作 Session
2.1 获取 Session
- 方法:
request.getSession()
或直接使用session
隐式对象。 - 作用:获取当前会话,若不存在则创建。
- 示例:
HttpSession session = request.getSession(); // 或直接用 session
2.2 设置 Session 属性
- 方法:
session.setAttribute(String name, Object value)
- 作用:在 Session 中存储键值对。
- 示例:
session.setAttribute("username", "Alice");
2.3 获取 Session 属性
- 方法:
session.getAttribute(String name)
- 作用:读取 Session 中的指定属性。
- 示例:
String username = (String) session.getAttribute("username");
out.println("用户名: " + username);
2.4 删除 Session 属性
- 方法:
session.removeAttribute(String name)
- 作用:移除指定的 Session 属性。
- 示例:
session.removeAttribute("username");
2.5 销毁 Session
- 方法:
session.invalidate()
- 作用:销毁当前会话,清除所有属性。
- 示例:
session.invalidate();
out.println("会话已销毁");
示例代码
- setSession.jsp(设置 Session):
<%@ page contentType="text/html;charset=UTF-8" %>
<%
session.setAttribute("user", "Alice");
session.setAttribute("role", "admin");
out.println("Session 已设置");
%>
<a href="getSession.jsp">查看 Session</a>
- getSession.jsp(读取 Session):
<%@ page contentType="text/html;charset=UTF-8" %>
<%
String user = (String) session.getAttribute("user");
String role = (String) session.getAttribute("role");
if (user != null) {
out.println("用户: " + user + "<br>角色: " + role);
} else {
out.println("Session 中无用户信息");
}
%>
<a href="removeSession.jsp">销毁 Session</a>
- removeSession.jsp(销毁 Session):
<%@ page contentType="text/html;charset=UTF-8" %>
<%
session.invalidate();
out.println("Session 已销毁");
%>
参考资料
- Oracle 官方文档
- javax.servlet.http.HttpSession
- 出站链接:https://docs.oracle.com/javaee/7/api/javax/servlet/http/HttpSession.html
- 提供 Session 接口的官方说明。
- JavaTpoint JSP 教程
- JSP Session
- 出站链接:https://www.javatpoint.com/jsp-session
- 详细讲解 JSP 中的 Session 操作。
- TutorialsPoint JSP Session
- JSP – Session Tracking
- 出站链接:https://www.tutorialspoint.com/jsp/jsp_session_tracking.htm
- 简洁的 Session 管理教程和示例。
如果需要更复杂的 Session 示例(如结合登录验证)或有其他问题,请告诉我!
发表回复