因為頁面上的request 和使用form提交的request 請求 不是壹個對象。測試如下:
首先在jsp頁面中打印出來request對象
<%
request.setAttribute("test","test");
System.out.println("request="+request+"返回頁面對象");//這裏打印出頁面request對象
%>
部分action代碼如下:
HttpServletRequest request = ServletActionContext.getRequest();
System.out.println("request="+request+"action裏的request對象");
String test = (String) request.getAttribute("test");
System.out.println("test="+test);
經過測試 輸出結果如下:
request=org.apache.struts2.dispatcher.StrutsRequestWrapper@199f0e5返回頁面對象
request=org.apache.struts2.dispatcher.StrutsRequestWrapper@19665e1action裏的request對象
test=null
request=org.apache.struts2.dispatcher.StrutsRequestWrapper@19665e1返回頁面對象
說明:
輸出結果第壹行 是第壹次加載請求頁面時,調用當前頁面的request對象(其實我們打開請求頁面時產生的請求對象)
第二行 是我用form 提交然後在action裏獲取的request對象,可以看到兩個request對象的類型是壹樣的 但是值卻不壹樣,這正好說明了 我們每次請求 都會重新產生壹個request對象。
到這裏,第三行就毫無疑問了,既然重新生成了request對象 那當然不會有我們之前set的屬性咯。
第四行很關鍵,我們看到了那個action裏的request對象 返回到了頁面上,他們是同壹個類型,同壹個對象。這正好說明了 當我們的響應模式為dispatcher時 request參數也會返回到頁面,因為request對象沒有變。
希望對妳有所幫助!