日期:2014-05-16  浏览次数:20389 次

GetSession(false)在JSP和Servlet首次访问结果不同的问题--原创
GetSession(false)在JSP页面第一次访问为什么不是Null,按照Servlet Specification 2.4应该为Null。由于前两年在做业务网站后台程序时,为了防止刷新数据重复提交,导致数据库异常的问题时,我查阅资料,亲自实现了令牌机制。所以我对这个理解才有一个深刻理解。JSP页面会交给Tomcat容器编译成Servlet,Servlet会生成一个像 public void_jspService(HttpServletRequest req,HttpServletRespose res)的方法,在这个方法中用到了getSession()方法,这个方法相当于调用了getSession(true),就是当前会话不存在就创建,所以你在访问JSP页面时,在页面调用Scriplet时,得到的是非NULL值。如果你不信可以在JSP页面中分别用session.getSession(false),和session.getSession()得到两个变量,打印出他们的HashCode(),值是一样的。另外说明的是由于JSP面面中使用的session非JSP声明变量(其实就是隐含变量),所以用到的session就是void_jspService中的session,是同一个对象的引用。 
但如果把getSession(flase)放在一个Servlet中,第一次访问这个Servlet得到的是Null值。
如有不妥之处,欢迎提出宝贵意见.

注:
有些东西,不要看网上的,自己弄出来才是真本事。请不要枉驾评论。我的这篇文章其实也没有深奥的道理,但可以给新手一些帮助。
不要乱评别人,我不算新手,也不算成手。至今用过Spring,Hibernate,Xfire,Lucene,Struts等技术做过开发,三年多。这是一天没事,突然想起前两年做的东东,想把过程记录下来。
以后有时间,打算每有心得就写篇文章。
1 楼 yiqingfeng 2008-04-16  
jsp页面可以设置是否需要启动session的
2 楼 titanfoot 2008-04-24  
这还叫原创赫赫?????


getSession() ====getSession(true)

getSession(false)

明白么?新手吧!嗬嗬!
3 楼 xpf7622 2008-04-25  
   这个我早就知道可以设置Session。请仔细看原文,谁都可以查看API知道getSession() ====getSession(true) 。没仔细看不要乱说。
   我强调的是JSP中和Servlet为什么不一样,也许题目没起好。
4 楼 titanfoot 2008-04-25  
戳中自己的软肋还不承认,

我觉得:具有1年jsp开发经验的人(稍微有点上进心的),早就知道这一点。

估计你是刚满1年?
5 楼 xpf7622 2008-04-25  
   再说两年前我就知道文章中的内容。并不是现在才知道。
   我承认还有许多高同要攀登,但并不象你们这样,看也不看,就否定别人。
   如果不认可的话,我以后会继续写文章的。
  我也不否认这样文章,发表文章言论自由,欢迎批评。
6 楼 xpf7622 2008-04-25  
再说两年前我就知道文章中的内容。并不是现在才知道。
我承认还有许多高峰要攀登,但并不象你们这样,看也不看,就否定别人。再说,如果有时间,我以后会继续写的。
我也不想和你争,毕竟言论自由。
7 楼 xpf7622 2008-04-25  
titanfoot  :请君给我看一下你自己写的文章。
另外,不管怎样,我不会把别人文章拿来,也不写上:摘自***,还要挂个原创的人强。
水平不够也罢,贵在可以坚持下去去写。