news 2026/4/16 17:30:22

会话管理_Session

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
会话管理_Session

目录

  • HttpSession概述
  • 原理图
  • 应用场景
  • HttpSession的使用
    • getSession方法的处理逻辑
  • HttpSession的时效性
    • 为什么要设置session的时效

HttpSession概述

HttpSession是一种保留更多信息在服务端的一种技术,服务器会为每一个客户端开辟一块内存空间,即session对象,客户端在发送请求时,都可以使用自己的session,这样服务端就可以通过session来记录某个客户端的状态了

  1. 服务端在为客户端创建session时,会同时将session对象的id,即JSESSIONID以cookie的形式放入响应对象
  2. 后端创建完session后,客户端会收到一个特殊的cookie,叫做JSESSIONID
  3. 客户端下一次请求时携带JSESSIONID,后端收到后,根据JSESSION找到对应的session对象
  4. 通过该机制,服务端通过session就可以存储一些专门针对某个客户端的信息了
  5. session也是域对象

原理图

应用场景

  1. 记录用户的登录状态
    用户登录后,将用户的账号等敏感信息存入session
  2. 记录用户操作的历史
    例如记录用户的访问痕迹,用户的购物车信息等临时性的信息

HttpSession的使用

getSession方法的处理逻辑

创建servlet1

packagecom.baidu.servlet;importjakarta.servlet.ServletException;importjakarta.servlet.annotation.WebServlet;importjakarta.servlet.http.HttpServlet;importjakarta.servlet.http.HttpServletRequest;importjakarta.servlet.http.HttpServletResponse;importjakarta.servlet.http.HttpSession;importjava.io.IOException;@WebServlet("/servlet1")publicclassServlet1extendsHttpServlet{protectedvoidservice(HttpServletRequestreq,HttpServletResponseresp)throwsServletException,IOException{// 接收请求中username参数Stringusername=req.getParameter("username");// 获得session对象HttpSessionsession=req.getSession();// 先判断请求中有没有一个特殊的cookie key就是JSESSIONID// 如果有// 根据JSESSIONID去找对应的SESSION对象// 找到了// 返回之前的session// 没找到// 创建一个新的session返回,并且向response对象中存放一个JSESSION的cookie// 如果没有// 该方法会创建一个新的session返回,并且向response对象中存放一个JSESSIONID的cookieSystem.out.println(session.getId());System.out.println(session.isNew());session.setAttribute("username",username);// 客户端响应信息resp.setContentType("text/html;charset=UTF-8");resp.getWriter().write("成功");}}

编写servlet2

HttpSession的时效性

为什么要设置session的时效

  • 用户量很大之后,session对象相应的也要创建很多,如果一味创建不释放,那么服务器端的内存迟早要被耗尽
  • 客户端关闭行为无法被服务端直接侦测,或者客户端较长时间不操作也经常出现,类似这种情况,就需要对sesion的时限进行设置了

默认的session最大闲置时间(两次使用同一个session中的间隔时间)
tomcat/conf/web.xml中配置为30分钟

我们也可以自己在当前项目的web.xml对最大闲置时间进行重新设定(设置完后,重新启动Tomcat)

也可以通过HttpSession的API对最大闲置时间进行设定

// 单位是秒session.setMaxInactiveInterval(60);

也可以直接让session失效

session.invalidate();
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/16 9:09:26

vue和springboot框架开发的小程序 高校社团活动报名管理系统_2d68m1o7

文章目录具体实现截图主要技术与实现手段关于我本系统开发思路java类核心代码部分展示结论源码lw获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!具体实现截图 同行可拿货,招校园代理 vueSpringboot高校社团活动报名管理系统_2d68m1o7 框架…

作者头像 李华
网站建设 2026/4/15 9:51:57

【大牛抄底】副图+选股指标抄底 逃顶 聚宝盆

{} Y1: -2; B: 99; T: 79; X1:25; VAR1:REF(CLOSE,1); 标尺: SMA(MAX(CLOSE-VAR1,0),5,1)/SMA(ABS(CLOSE-VAR1),5,1)*100,COLORYELLOW; VAR2:(CLOSE-LLV(LOW,18))/(HHV(HIGH,18)-LLV(LOW,18))*100; VAR3:SMA(VAR2,5,1); VAR4:SMA(VAR3,3,1); VAR5:SMA(VAR4,3,1); 浪:…

作者头像 李华
网站建设 2026/4/16 9:09:06

2025年热门低代码/零代码开发平台

工业自动化领域正经历一场开发范式革命,传统的手写代码模式逐渐被可视化拖拽和模块化组装的低代码/零代码平台取代。这些平台显著降低开发门槛,提升工程效率,成为推动智能制造落地的关键工具。本文将深入解析国产新锐GraniStudio零代码平台的…

作者头像 李华
网站建设 2026/4/16 9:07:18

自学黑客走网络安全路?不是我泼冷水,普通人真的别硬扛!

自学黑客(网络安全),一般人我劝你还是算了吧! PART.01 自学网络安全的误区和陷阱 1.不要试图先成为一名程序员(以编程为基础的学习)再开始学习 一再强调不要以编程为基础再开始学习网络安全,…

作者头像 李华
网站建设 2026/4/16 9:07:27

夸克网盘不限速下载破解 - 在线解析工具

今天教大家一招能解决夸克网盘限制的在线工具。这个工具也是完全免费使用的。下面让大家看看我用这个工具的下载速度咋样。地址获取:放在这里了,可以直接获取 这个速度还是不错的把。对于平常不怎么下载的用户还是很友好的。下面开始今天的教学 打开上面…

作者头像 李华