session是什么时候创建的?

由于最近要在原来项目的基础上给第三方app提供一套接口,但是我们这个项目以前一直是维护状态,并且以前写的时候没有想过对接app或者小程序使用,没有考虑那么长远,有很多session相关的操作,现在需要进行改造,可能不再使用session,但是原来设计的黑名单,在线人数统计一些功能,可能需要重新改写,目前还在考虑原来的代码不动,重新写一套app逻辑,service代码大部分还可以复用,还是使用token这种,不再用session机制,于是重新梳理下此块web知识。
一直以来javaweb伴随着web工程师,可是太多人忙于框架之上的CRUD,底层的一些基本原理忽略了。现在让我们从session开始慢慢捡起来javaweb的基本原理吧。

其中servlet和jsp都是默认内容。

  • 测试1:分别请求servlet和jsp,通过浏览器查看是否生成session。
  • 测试结果:请求servlet没有产生session,请求jsp产生了session。

理论知识:jsp的本质是servlet,只有在servlet中调用request.getSession();或者request.getSession(true);服务器才会产生session。如果调用request.getSession(false);将不会产生session。那么为什么jsp会产生session。
查找原因:
在eclipse项目所在的工作空间中,找到jsp的源码

查看index.jsp源代码:

可以看到在index.jsp的java代码中,自动获取了session。

一个常见的错误是以为session在有客户端访问时就被创建,然而事实是直到某server端程序(如Servlet)调用HttpServletRequest.getSession(true)这样的语句时才会被创建。

文章链接

posted @   皮卡丘和羊宝贝😄  阅读(109)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示