以下是我上網去搜尋到的資料,他做的非常的詳細而且只有他整理出來而已
引用:http://blog.xuite.net/jsp.city/blog/5123110-%5BJSP%5D+Expression+Language+%28EL%29
1. 什麼是EL (Expression Language) 表示式語言?
在網站開發的過程中,通常需要程式設計師與美術工程師一起合作才能產生出具美感與流暢操作的網站,而在設計網頁時,難免會將許多JSP程式碼混在網頁中,造成美術工程師的困擾,所以就產生了EL。EL利用簡單、自然的表達語法,在網頁中顯示本來要用JSP程式碼才能顯示的資料,方便了美術工程師對於網頁內容的閱讀,也降低了程式設計師撰寫網頁的複雜程度。
2. 要如何使用EL?
要使用EL請參考下列語法:
${ EL表示式 }
3. EL運算
EL與一般程式語言相同,都具備算術運算子與比較運算子,請參考以下表格:
算術運算子 |
|||
運算子 |
說明 |
範例 |
結果 |
+ |
加 |
${10+3} |
13 |
- |
減 |
${10-3} |
7 |
* |
乘 |
${10*3} |
30 |
/ 或 div |
除 |
${10/3} ${10 div 3} |
3.33333334 3.33333334 |
% 或 mod |
求餘數 |
${10%3} ${10 mod 3} |
1 1 |
比較運算子 |
|||
運算子 |
說明 |
範例 |
結果 |
= = 或 = |
等於 |
${10 = = 3} ${10 = 3} |
false false |
!= |
不等於 |
${10 != 3} |
true |
> 或 lt |
大於 |
${10 > 3} ${10 lt 3} |
true true |
< 或 gt |
小於 |
${10 < 3} ${10 gt 3} |
false false |
>= 或le |
大於等於 |
${10 >= 3} ${10 le 3} |
true true |
<= 或 ge |
小於等於 |
${10 <= 3} ${10 ge 3} |
false false |
empty |
檢查是否為空值(回傳布林值) |
${empty "EL"} |
false |
x?y:z |
條件判斷式(當x條件成立就顯示y否則顯示z) |
${10>5?10:5} |
10 |
邏輯運算子 |
|||
運算子 |
說明 |
範例 |
結果 |
&& 或 and |
AND |
${true && true} ${true and true} |
true true |
|| 或 or |
OR |
${true || false} ${true or false} |
true true |
! 或 not |
NOT |
${!true} ${not true} |
false false |
使用EL存取資料
如果想要顯示application隱含物件中的count變數時,可以使用JSP這樣做:
<%=application.getAttribute("count")%>
而也可以透過EL這樣做:
${count}
或
${applicationScope.count}
您可以發現EL真的讓JSP的程式碼簡潔了許多。其中applicationScope代表示application隱含物件中的資料集合(並不等於application物件),而EL顯示集合的方法有三種:
${applicationScope.count}
${applicationScope['count']}
${applicationScope["count"]}
4.存取資料的預設物件有:★★★
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} |
5. 利用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]} |
6. 利用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}
7. 利用EL取得網頁標頭資訊
取得標頭用EL所提供的預設物件
EL預設物件 |
對應的JSP的方法 |
header |
request.getHeader() |
headerValues |
request.getHeaders() |
舉例來說,如果想要取得目前網站主機名稱,可以使用以下方法:
使用JSP |
使用EL |
<%=request.getHeader("host")%> |
${header.host} |