request、requestScope、param區別

來源:互聯網
上載者:User

搜了一下,整理如下……

首先在看遇到的問題:

在瀏覽器地址輸入,表示傳入一個參數test,值為123

http://localhost:8888/Test/index.jsp?test=123


在index.jsp中嘗試使用EL運算式取出,代碼如下:

 <body>    ${test} </body>

發現毫無結果,再使用requestScope嘗試取出:

  <body>    ${requestScope.test}  </body>

發現還是毫無結果,感到非常詫異,遂乾脆使用java指令碼嘗試取出。

  <body>      <%request.getAttribute("test"); %>  </body>


依然無解。

之後發現,若使用已下代碼向request範圍賦值,則用上面代碼可以取出

<%    request.setAttribute("test", "123"); %>

 

查詢資料後發現,使用以下代碼可以取出之前的請求參數:
EL:

  <body>    ${param.test}  </body>

JAVA指令碼:

  <body>      <%=request.getParameter("test") %>  </body>
複製代碼

結論就是:${param.name} 等價於 request.getParamter("name"),一般是從頁面或者用戶端擷取的內容,

     ${requestScope.name} 等價於 request.getAttribute("name"),一般是從伺服器段傳過來的,可以傳到用戶端也可以傳到伺服器裡面(即,方法1傳到方法2,伺服器內部的傳輸)


pageContext.request是一個具體的對象,在你的http請求過程中存在。 
requestScope是一個定義, 表明一個http請求的整個聲明周期,它只是一個定義而已,不是一個對象。 EL中你可以在這個周期中放置、擷取對象。(當然,其實真正的操作也是針對request對象的)。

requestScope通常是將某個變數或者對象在servlet或者acion中通過request.setAttribute()方法放入到request對象中,然後在頁面中使用requestScope來進行資料的顯示的
而request.getparameter則是則是更多的用在servlet或者action中,它的作用是接受表單提交來的資料,比如你的jsp頁面中的表單提交的資料。
兩者的區別是:requestScope更多的用於展示頁面,從request對象中取出對象或者變數來顯示,而request中的對象或者變數也是程式員通過手動的方式request.setAttribute方法來放入request對象中的
而request.getparameter則更多的應用於背景方法中,它的參數不是程式員手動設定的,而是由表單來接受使用者輸入的值會隨著使用者的請求被放入request對象中。

request.getParameter 和request.getAttribute
1.通過地址欄傳遞的參數只能通過getParameter 接收
2.getAttribute擷取的是Object,getParameter 是String

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.