JavaWeb中session创建于销毁的问题
Posted 阿狸哥哥
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaWeb中session创建于销毁的问题相关的知识,希望对你有一定的参考价值。
今天遇到一个奇怪的问题,自己添加了一个session的监听,用来监听在线的人数。但打开浏览器时一直没有走进这个监听中来。最后百度找到了原因:
我们一直存在一个误区,javaweb中的session什么时候创建?我一直认为是第一次与浏览器建立连接的时候,就自动创建一个session。其实不然!
只有在server端的代码调用request.getSession(true)这个方法时,才互创建一个session。其中true表示,如果存在一个相同的session,则直接返回,如果不存在,则创建一个新的session;false表示,如果不存在,则返回null。而我的代码中比较简单,没有用到session存储东西,所有一直没调用request.getSession(true)这个方法。
在拦截器中加了这句话之后,问题又来了,后面的每个请求,都会去创建一个session,这与之前的理解的一个浏览器对应一个session又相冲突了。猜测是因为每次请求的sessionId不同导致的,应该是在请求响应的时候没有设置cookie导致的,HTTP请求是无状态的,每个请求对server来说都是新的。
为了搞清内部原理,决定跟着源码继续看下session具体的创建和销毁逻辑吧。
以上是关于JavaWeb中session创建于销毁的问题的主要内容,如果未能解决你的问题,请参考以下文章
JAVAWEB开发之Session的追踪创建和销毁JSP具体解释(指令,标签,内置对象,动作即转发和包括)JavaBean及内省技术以及EL表达式获取内容的使用