一直都是只浅显地了解到session是保存在服务器端,保存用户信息,没有深究过session是在何时生成的,在最近找工作面试的时候突然被问及到,很是懵比。。。话说,纸上得来终觉浅,绝知此事要躬行。所以以下通过简单的Servlet项目了解一下在什么时候生成sessionId.

大概的项目部署就是如上图所以,将项目部署在Tomcat8中,然后通过Nginx反向代理。
以下就是通过一步一步跟踪的结果:
- 直接访问项目根目录下的hello.html文件,不会生成JSESSIONID

- 访问index.jsp文件,会生成JSESSIONID

- 访问servlet,不传session参数,通过断点发现确实访问到了servlet,不会生成JSESSIONID


- 传入session参数,通过调用
request.getSession()
或者request.getSession(true)
,生成JSESSIONID。


- 传入session参数,通过调用
request.getSession(false)
,不会生成JSESSIONID。


通过查阅网上资料,知道session在调用request.getSession()方法时生成,在调用session.invalidate()
或者超时销毁。
访问jsp页面生成session,是因为,session是jsp九大内置对象中的一个,jsp先是转换成Servlet,就已经建立了session对象。
网友评论