近来工作中发现一个一直被我忽略的问题:在tomcat中,Session是什么时候被创建的?
所用 tomcat 的版本:apache-tomcat-5.5.20。
Session是维持客户端和服务器端会话的 实现在多个页面之间访问保持状态
但是是什么时候被创建的呢?
以前在某J2EE论坛看见数个管理员的说法:session在有客户端访问时就被创建。
这个是对是错一直没有亲自去验证。
测试如下:
创建一个say Hello的servlet,创建一个say Hello的JSP,在里面用
java 代码
- HttpSession session = req.getSession(false);
- out.print(session);
就可以发现,无论访问多少次的Servlet,打印出来的永远为null
但是访问JSP的话,就不会为null,结果为一串表示session对象的字符串。
PS:如果是访问的HTML页面的话,也不会有session的产生···
再在Servlet中修改:
java 代码
- HttpSession session = req.getSession(true);
就可以发现访问Servlet的时候,session通过这个语句被创建。
在JSP头部加入
JSP 代码
- <%@page session="false"%>
就可以发现此JSP不会再主动创建session对象。
结论:session对象直到某服务器端程序调用这样的语句时才被创建,而在JSP中会默认调用
- HttpSession session = req.getSession(true);
这个问题已经很清楚了,教训:不确定的必须自己亲自去做实验验证,不然。。。。。。