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 @ 2021-01-25 16:06  皮卡丘和羊宝贝😄  阅读(101)  评论(0编辑  收藏  举报