搜了一下,整理如下……
首先在看遇到的問題:
在瀏覽器地址輸入,表示傳入一個參數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