當前位置:編程學習大全網 - 源碼下載 - jsp中用request.setAttribute()後,在action中為什麽取不到值?

jsp中用request.setAttribute()後,在action中為什麽取不到值?

不能這麽請求。

因為頁面上的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對象沒有變。

希望對妳有所幫助!

  • 上一篇:02-TF-tf介紹
  • 下一篇:MATLAB
  • copyright 2024編程學習大全網