今天演示EL表達式的時候發現自己jsp的基礎實在是薄弱,在這個很簡單的問題上迷惑了很久。
首先在看遇到的問題:
在瀏覽器地址輸入,表示傳入一個參數test,值為123
http://localhost:8888/Test/index.jsp?test=123
在index.jsp中嘗試使用EL表達式取出,代碼如下:
發現毫無結果,再使用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"),一般是從服務器傳遞結果到頁面,在頁面中取出服務器保存的值。
參考資料:
el表達式中的${param}
http://topic.csdn.net/u/20090103/15/779af9b8-c3a7-4f3e-82fe-b08bf2630996.html