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>

文章標籤
創作者介紹
MIS

MISTECH 技術手抄本

MIS 發表在 痞客邦 PIXNET 留言(0) 人氣()