实践前提 嵌入式tomcat 或者有tomcat源码
session 我们request.getSession() 拿的这个session 到到底是什么,不是HttpSession吗,可是这个只是接口没有实现。
空口无凭 我们来看一下session里面到底是什么
可见它是StandardSession 类 那么这个类又在哪的?(eclipse 里面 ctrl+shift+t 查找一下)
没错她在tomcat的包里,事实证明是我们web容器帮我们创建session,那么问题来了,它是在什么时候创建的呢?
我们打开StandardSession类 找到它的构建方法 然后打上断点 重新debug启动 启动过程中没有进入断点,证明session 不是tomcat启动时创建的,再访问一下应用 进入断点 。我们看左上方debug 显示了它的调用顺序。
上面证明了是接到第一个请求的时候tomcat 才创建了session 。
这个HttpSesssion session = new StandardSession() 父类引用指向子类对象 ,实现了httpSession ,重写了父类方法 ,这是一个多态的表现。总结完毕,撒花!
如果看官有什么觉得不对的地方,欢迎拍砖留言!我看着修改!