学习之Session

1.3.2 HttpSession的使用

用户提交form表单到ServletA,携带用户名,ServletA获取session 将用户名存到Session,用户再请求其他任意Servlet,获取之间存储的用户

  • 定义表单页,提交用户名,提交后
<form action="servletA" method="post"> 用户名: <input type="text" name="username"> <input type="submit" value="提交"> </form>
  • 定义ServletA,将用户名存入session
@WebServlet("/servletA") public class ServletA extends HttpServlet { @Override protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // 获取请求中的参数 String username = req.getParameter("username"); // 获取session对象 HttpSession session = req.getSession(); // 获取Session的ID String jSessionId = session.getId(); System.out.println(jSessionId); // 判断session是不是新创建的session boolean isNew = session.isNew(); System.out.println(isNew); // 向session对象中存入数据 session.setAttribute("username",username); } }
  • 响应中收到了一个JSESSIONID的cookie
1682476311432
  • 定义其他Servlet,从session中读取用户名
@WebServlet("/servletB") public class ServletB extends HttpServlet { @Override protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // 获取session对象 HttpSession session = req.getSession(); // 获取Session的ID String jSessionId = session.getId(); System.out.println(jSessionId); // 判断session是不是新创建的session boolean isNew = session.isNew(); System.out.println(isNew); // 从session中取出数据 String username = (String)session.getAttribute("username"); System.out.println(username); } }
  • 请求中携带了一个JSESSIONID的cookie
1682476350602

getSession方法的处理逻辑

1682477914654

1.3.3 HttpSession时效性

为什么要设置session的时效

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

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

1682478412527

我们可以自己在当前项目的web.xml对最大闲置时间进行重新设定

1682478633650

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

// 设置最大闲置时间 session.setMaxInactiveInterval(60);

也可以直接让session失效


__EOF__

本文作者Drip
本文链接https://www.cnblogs.com/drip3775/p/18043434.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   笠大  阅读(5)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· spring官宣接入deepseek,真的太香了~
点击右上角即可分享
微信分享提示