SESSIONID在何时生成?

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

Paste_Image.png

大概的项目部署就是如上图所以,将项目部署在Tomcat8中,然后通过Nginx反向代理。
以下就是通过一步一步跟踪的结果:

  1. 直接访问项目根目录下的hello.html文件,不会生成JSESSIONID
Paste_Image.png
  1. 访问index.jsp文件,会生成JSESSIONID
Paste_Image.png
  1. 访问servlet,不传session参数,通过断点发现确实访问到了servlet,不会生成JSESSIONID
Paste_Image.png
Paste_Image.png
  1. 传入session参数,通过调用request.getSession()或者request.getSession(true),生成JSESSIONID
Paste_Image.png
Paste_Image.png
  1. 传入session参数,通过调用request.getSession(false)不会生成JSESSIONID
Paste_Image.png
Paste_Image.png

通过查阅网上资料,知道session在调用request.getSession()方法时生成,在调用session.invalidate()或者超时销毁。

访问jsp页面生成session,是因为,session是jsp九大内置对象中的一个,jsp先是转换成Servlet,就已经建立了session对象。

demo地址:https://github.com/menm91/JavaDemos.git

推荐阅读更多精彩内容

  • 从三月份找实习到现在,面了一些公司,挂了不少,但最终还是拿到小米、百度、阿里、京东、新浪、CVTE、乐视家的研发岗...
    时芥蓝阅读 26,149评论 9 310
  • 这部分主要是与Java Web和Web Service相关的面试题。 96、阐述Servlet和CGI的区别? 答...
    杂货铺老板阅读 423评论 0 8
  • cookie机制 在程序中,会话跟踪是很重要的事情。理论上,一个用户的所有请求操作都应该属于同一个会话,而另一个用...
    依依玖玥阅读 3,582评论 0 15
  • Session机制 除了使用Cookie,Web应用程序中还经常使用Session来记录客户端状态。Session...
    薛晨阅读 3,772评论 3 30
  • 摘要 Session 与 Cookie 不管是对 Java Web 的初学者还是熟练使用者来说都是一个令人头疼的问...
    303Donatello阅读 1,536评论 0 13