JSP 的 EL 與 JSF 的 EL( 如 JSF EL ( Expression Language ) 的介紹),大致相同,參考 http://penguin1989930.pixnet.net/blog/post/236537248 ,後整理如下:
使用EL存取資料
如果想要顯示application隱含物件中的count變數時,可以使用JSP這樣做:
<%=application.getAttribute("count")%>
而也可以透過EL這樣做:
${count}
或
${applicationScope.count}
您可以發現EL真的讓JSP的程式碼簡潔了許多。其中applicationScope代表示application隱含物件中的資料集合(並不等於application物件),而EL顯示集合的方法有三種:
${applicationScope.count}
${applicationScope['count']}
${applicationScope["count"]}
1.存取資料的預設物件有:★★★
EL預設物件 |
對應的JSP隱含物件集合 |
applicationScope |
application集合 |
sessionScope |
session集合 |
pageScope |
page集合 |
requestScope |
request集合 |
pageContext |
pageContext物件 |
存取資料時,如果沒有指定範圍,會依照pageContext >> request >> session >> application的順序來顯示資料,例如:
<%
session.setAttribute("username","jack");
application.setAttribute("username","mary");
%>
${username}
由於session與application兩者都擁有username變數值,所以EL會依照先後順序來顯示資料(session >> application),所以上述程式便會輸出 jack。
如果想要取得web.xml所設定的初始變數值,可以利用initParam預設物件來完成,請看以下範例:
使用JSP |
使用EL |
<%=application.getInitParameter("host")%> |
${initParam} |
2. 利用EL接收網頁傳遞過來的資料 ★★★
接收網頁傳遞過來的資訊可使用EL所提供的預設物件
EL預設物件 |
對應的JSP的方法 |
param |
request.getParameter() |
paramValues |
request.getParameterValues() |
如果要顯示網頁傳遞過來的變數:
使用JSP |
使用EL |
<%=request.getParamater("username")%> |
${param.username} |
如果要顯示網頁傳遞過來的變數:(該變數為陣列時)
使用JSP |
使用EL |
<% String[] paper = request.getParamaterValues("paper"); out.print("第一個項目:"+paper[0]); %> |
${paramValues.paper[0]} |
3. 利用EL取得cookie資料
如果使用JSP來取得cookie中的username,可以使用以下程式碼:
Cookie[] ck = request.getCookies();
if (ck != null) {
for (int i = 0; i < ck.length; ++i)
if (ck[i].getName().equals("username")) {
out.print(ck[i].getValue());
break;
}
}
但如果使用EL的預設物件-cookie,就可以簡化成:
${cookie.username.value}
4. 利用EL取得網頁標頭資訊
取得標頭用EL所提供的預設物件
EL預設物件 |
對應的JSP的方法 |
header |
request.getHeader() |
headerValues |
request.getHeaders() |
舉例來說,如果想要取得目前網站主機名稱,可以使用以下方法:
使用JSP |
使用EL |
<%=request.getHeader("host")%> |
${header.host} |
<%=request.getContextPath() %> |
${request.contextPath} |
運用如下:
<a href="${request.contextPath}/Home" >Home</a>
留言列表