誰在創(chuàng)建session(3)-湊熱鬧的webwork標(biāo)簽
按照前面的方法,將jsp頁(yè)面加入<%@ page session="false"%>之后,發(fā)現(xiàn)還是有新的session會(huì)意外的蹦出來。仔細(xì)檢查action沒有操作session,那這次是誰干的呢?將目光轉(zhuǎn)回jsp文件,首先來次狠的,將這個(gè)jsp文件的內(nèi)容刪空為只有純html內(nèi)容。重新運(yùn)行后發(fā)現(xiàn)不會(huì)自動(dòng)生成session,ok,問題在jsp文件里面了。將原來的內(nèi)容一點(diǎn)點(diǎn)的加回去,反復(fù)測(cè)試直到session自動(dòng)創(chuàng)建的問題再次出現(xiàn), 哈,發(fā)現(xiàn)問題出現(xiàn)在webwork的標(biāo)簽上。這次出問題的a.jsp代碼內(nèi)容為:
?<%@ 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">
<ww:i18n name="'msg'">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
</head>
<body>
<%=1%>
</body>
</html>
</ww:i18n>
部署到webapp的根目錄,在瀏覽器中直接用http://****/a.jsp訪問,通過抓包工具發(fā)現(xiàn)有
Set-Cookie: JSESSIONID=abclEpuvWZhHD_UWW7WBr; path=/
將上述文件復(fù)制為b.jsp,刪除<ww:i18n>標(biāo)簽,代碼修改為:
?<%@ 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>
再次測(cè)試,發(fā)現(xiàn)不再創(chuàng)建session,由此可以確認(rèn)是webwork的標(biāo)簽所為。
繼續(xù)追蹤為什么webwork的標(biāo)簽會(huì)如此處理,還是google大法,很快在webwork的2.2文檔中發(fā)現(xiàn)了這么一段:
http://wiki.javascud.org/display/ww2cndoc/WebWork+2.2+Migration+Notes
"session map wrapper (在ActionContext里建立的) 已經(jīng)改變了不在為每個(gè)請(qǐng)求創(chuàng)建session. 如果你的應(yīng)用程序依賴session會(huì)被自動(dòng)創(chuàng)建,WebWork 2.2已經(jīng)不在那樣做了.作為替代,你必須自己創(chuàng)建session或者當(dāng)把一個(gè)數(shù)據(jù)放到session Map里時(shí)session會(huì)被創(chuàng)建. "
對(duì)照了一下我當(dāng)前測(cè)試的版本, webwork2.1.7,看來是這里了。馬上上webwork的網(wǎng)站下了最新的2.2.6版本,最快速度搭建了一個(gè)測(cè)試環(huán)境。將剛才的a.jsp/b.jsp拉過去測(cè)試了以下,ok,果然新的2.2版本修改了原來的做法,不再創(chuàng)建session。搞定!
posted on 2007-12-19 17:25 sky ao 閱讀(1688) 評(píng)論(1) 編輯 收藏 所屬分類: web