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)这样的语句时才会被创建。
艾欧尼亚,昂扬不灭,为了更美好的明天而战(#^.^#)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 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语句:使用策略模式优化代码结构