目录

  1. Session 的作用与工作原理
  2. 在 JSP 中操作 Session
  1. 示例代码
  2. 参考资料

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 已销毁");
  %>

参考资料

  1. Oracle 官方文档
  1. JavaTpoint JSP 教程
  1. TutorialsPoint JSP Session

如果需要更复杂的 Session 示例(如结合登录验证)或有其他问题,请告诉我!