读书人

哪位高手在创建session(3)-凑热闹的we

发布时间: 2012-11-03 10:57:43 作者: rapoo

谁在创建session(3)-凑热闹的webwork标签
按照前面的方法,将jsp页面加入<%@ page session="false"%>之后,发现还是有新的session会意外的蹦出来。仔细检查action没有操作session,那这次是谁干的呢?将目光转回jsp文件,首先来次狠的,将这个jsp文件的内容删空为只有纯html内容。重新运行后发现不会自动生成session,ok,问题在jsp文件里面了。将原来的内容一点点的加回去,反复测试直到session自动创建的问题再次出现, 哈,发现问题出现在webwork的标签上。

这次出问题的a.jsp代码内容为:

?



部署到webapp的根目录,在浏览器中直接用http://****/a.jsp访问,通过抓包工具发现有
Set-Cookie: JSESSIONID=abclEpuvWZhHD_UWW7WBr; path=/

将上述文件复制为b.jsp,删除<ww:i18n>标签,代码修改为:

?<%@ page contentType="text/html; charset=UTF-8" %>
<%@ page session="false" %>
<%@taglib prefix="ww" uri="webwork" %>

<!DOCTYPE html PUBLIC "-//W3C/m/DTD XHTML 1.0 Strict//EN"        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><title></title></head><body><%=1%></body></html>

再次测试,发现不再创建session,由此可以确认是webwork的标签所为。

继续追踪为什么webwork的标签会如此处理,还是google大法,很快在webwork的2.2文档中发现了这么一段:

http://wiki.javascud.org/display/ww2cndoc/WebWork+2.2+Migration+Notes

"session map wrapper (在ActionContext里建立的) 已经改变了不在为每个请求创建session. 如果你的应用程序依赖session会被自动创建,WebWork 2.2已经不在那样做了.作为替代,你必须自己创建session或者当把一个数据放到session Map里时session会被创建. "

对照了一下我当前测试的版本, webwork2.1.7,看来是这里了。马上上webwork的网站下了最新的2.2.6版本,最快速度搭建了一个测试环境。将刚才的 a.jsp/b.jsp拉过去测试了以下,ok,果然新的2.2版本修改了原来的做法,不再创建session。搞定!

读书人网 >Web前端

热点推荐