news 2026/10/18 11:40:39

会话管理_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/10/17 19:28:09

python-flask-django基于Web的在线考试答题游戏的设计与实现_5o5sjig8

文章目录系统截图项目技术简介可行性分析主要运用技术介绍核心代码参考示例结论源码lw获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!系统截图 python-flask-django基于Web的在线考试答题游戏的设计与实现_5o5sjig8 项目技术简介 Pyth…

作者头像 李华
网站建设 2026/10/18 7:31:48

免费彻底解决找不到d3dx10_38.dll文件 无法运行软件和游戏问题

在使用电脑系统时经常会出现丢失找不到某些文件的情况,由于很多常用软件都是采用 Microsoft Visual Studio 编写的,所以这类软件的运行需要依赖微软Visual C运行库,比如像 QQ、迅雷、Adobe 软件等等,如果没有安装VC运行库或者安装…

作者头像 李华
网站建设 2026/10/18 12:44:19

Mac_Linux 查询网站IP地址:4个核心命令详解

Mac/Linux 查询网站IP地址:4个核心命令详解 在日常开发、网络排查或学习过程中,我们经常需要知道某个网站对应的IP地址(比如确认域名解析是否正常、判断访问延迟的原因等)。在Mac和Linux系统下,无需安装额外工具&#…

作者头像 李华
网站建设 2026/10/17 16:08:21

ArcGIS大师之路500技---034重采样算法选择

文章目录前言1. 最邻近分配法(Nearest Neighbor Assignment)2. 双线性插值法(Bilinear Interpolation)3. 三次卷积插值法(Cubic Convolution Interpolation)4. 众数重采样法(Mode Resampling / …

作者头像 李华
网站建设 2026/10/18 1:30:12

ArcGIS大师之路500技---035拉伸类型详解

文章目录前言1. 无(无拉伸)2. 自定义拉伸3. 标准差拉伸4. 直方图均衡化5. 最值拉伸(最小-最大拉伸)6. 直方图规定化(匹配)7. 百分比截断拉伸8. Esri(ESRI风格拉伸)总结前言 在遥感影…

作者头像 李华
网站建设 2026/10/17 20:39:26

《c++小程序编写系列》(第一部)c++前言及有关知识

一、前言:为什么从 “小程序” 开始学 C? C 是一门兼顾性能与灵活性的编程语言,广泛应用于游戏开发、系统编程、嵌入式等领域,但它的语法规则相对严谨,直接学习复杂项目容易产生挫败感。而小程序编写(指功…

作者头像 李华