源自其他博主分析的jstl+el整理

來源:互聯網
上載者:User

標籤:傳遞   擷取   contain   out   sts   container   otherwise   style   好的   

JSTL和EL的使用

 

是簡化代碼,如果你以前用JAVA內嵌程式碼時會這麼做
<%names = request.getAttribute("name");%>
jsp代碼...
<%for(int i=0;i<names.length;i++){
String name=names.get(i);

%>
<tr>
<td>

<%=name%>

</td>

</tr>
<%}%>
如果你用JSTL+EL的話就不用這麼麻煩了,而且企業也不會像上面代碼一樣操作的,主要是代碼量巨大,如果用Jstl+El的話就好多了
<c:forEach var=‘name‘ items=‘${names}‘>//此句是Jstl運算式
<tr>
<td>

${name}//此句是El運算式

</td>

</tr>
//就可以觀看性來就肯定是JSTL+El容易理解,而且他能動擷取來自伺服器傳過來的值,與JSP實現高度耦合。

上述為對比

下述為舉例說明

使用JSTL前的準備

想要使用JSTL,首先需要給工程匯入JSTL的包(JSTL.jar和standard.jar).

JSTL標籤庫

在JSTL中分為以下五個標籤

  1. 核心標籤
  2. 格式化標籤
  3. SQL標籤
  4. XML標籤
  5. JSTL函數

使用不同的標籤的時候需要在JSP中引入不同的庫

核心標籤(Core): 引入標籤庫
1 <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<c:set>

<c:set> 等同於JSP中的 session的setAttribute() 方法

使用方法:

1.<c:set var=”名字” value=”值”/>

2.<c:set var=”名字”>值</c:set>

<c:out>

<c:out> 等同於 JSP中的 <%= %>

使用方法:

<c:out value=”需要輸出的值”>

在這裡可以用EL運算式來進行輸出session中的Attrbute

例:

<c:set var=”test” value=”這是一個測試”><c:out value=”${test}”>

輸出結果: 這是一個測試

<c:remove>

<c:remove> 和c:set標籤正好相反,c:set標籤是設定setAttrbute 這個標籤則是 刪除 Attrbute中設定的值 等同於 session中的removeAttrbute()方法

使用方法:

<c:remove var=”名字”/>
<c:if>

<c:if> 等同於 java 中的 if 語句

使用方法:

<c:if test=”條件”>滿足條件執行的JSP代碼</c:if>
<c:catch>

<c:catch> 類似於 java 中的 try

使用方法:

<c:catch var=”名字”>JSP代碼</c:catch>

如果在執行過程中,JSP代碼發生了錯誤,那麼將會複製給名字,因此我們可以通過判斷名字是否為NULL 來進行判斷是否有異常發生

例:

<c:catch var=”testException”><% int i = 5/0; %></c:catch><c:if test=”${testException != null}”>

    上面的代碼有錯誤發生

 </c:if>

輸出結果: 上面的代碼有錯誤發生

如果將 上面的 0 改為 3 則沒有任何輸出結果

<c:choose> 和 <c:when>

<c:choose> 和 <c:when> 類似於 java 中的 switch 和 case

使用方法:(c:choose中可以有多個c:when標籤)

<c:choose><c:when test=”條件”>處理</c:when><c:when test=”條件”>處理</c:when></c:choose>

 

例:

<c:set var=”test” value=”10”/><c:choose><c:when test=”${test > 5}”>test 大於5</c:when><c:when test=”${test < 5}”>test小於5</c:when></c:choose>

 

輸出結果: test大於5

<c:otherwise>

<c:otherwise> 等同於 java switch 中的 default

使用方法

<c:choose><c:otherwise>處理</c:otherwise></c:choose>

 

當choose 中的 when 沒有滿足條件的時候 會執行 otherwise 中的內容

注意: choose 和 when 和 otherwise 是一組 when 和 otherwise 必須寫在choose中

<c:import>

使用方法:

<c:import var=”date” url=”http://www.baidu.com” />

通過上面的寫法會將 百度 的原始碼返回到 date 變數中,使用

<c:out value=”${date}”>

 

輸出

<c:forEach> 和 <c:forTokens>

類似於JAVA中的 FOR迴圈 和 FOREACH迴圈

使用方法:

<c:forEach var=”名字(i)” begin=”開始數字(1)” end=”結束數字(5)”>${i}</c:forEach>

 

輸出結果是1 2 3 4 5

使用方法:

<c:forTokens items=”a,b,c,d,e” delims=”,” var=”name”>${name}</c:forTokens>

 

輸出結果 a b c d e

forEach類似於JAVA中 for 迴圈 設定一個開始數字 begin 設定一個結束數字 end 然後每次迴圈都會將值賦值給 var   另外還有個 setp參數 裡面可以設定值 意思是每次增加幾個數

forTokens類似於JAVA中的foreach 在items中放一個組 然後 delims設定以什麼分割 然後 將分割後迴圈的值賦值給 var  如果 items中存放的是一個集合 那麼可以不用寫delims 這樣每迴圈一次 就會取出集合中的一個放在 var中

<c:redirect>

類似於service中的重新導向

使用方法:

<c:redirect url=”http://www.baidu.com”/>

 

重新導向到百度去

另外還有<c:url> 和 <c:param>兩個標籤

 

EL運算式介紹:

EL運算式定義規則:以 $ 開頭 內容寫在 {} 中 例: ${test}

當然,因為EL運算式所有的代碼都是寫在{}中的,所以我們也可以在裡面寫運算

比如:

${test+100}

最終輸出的結果就是test這個變數加上數字100後的值了

再比如

 

${test != null} 

最終輸出的結果就是一個true  通過這種方式  我們可以很好的和JSTL結合起來一起使用.

EL中的運算子分為  .  和  []  兩種

如果要動態取值 可以使用[]  比如:

${session.user[date]}

 其中的date是一個變數

上面代碼的意思是 取出 session.user這個數組裡面的第 date 個元素

需要注意的是,EL運算式限制了我們調用JAVA方法,如果想要調用,可以自訂一個TAG

EL運算式尋找順序(都是針對Attrbute()):

如果使用類似於 ${username} 的時候沒有在哪一個範圍尋找username 那麼它會以:

  1. Page
  2. Request
  3. Session
  4. Application

為順序來進行尋找,加入中途找到了 username 那麼就會傳回值  如果一路沒找到 返回 null

EL運算式的隱性變數:

從這裡開始就是介紹EL運算式的隱性變數,通過這些隱性變數可以讓我們簡便完成很多複雜的操作:

pageContext  用來訪問JSP的隱性對象
pageScope page對象的MAP
requestScope  request對象的MAP
requestScope  request對象的MAP
sessionScope  session對象的MAP
applicationScope  application對象的MAP
param  包含請求參數字串的MAP
paramValues  包含請求參數字串數組的MAP
header  包含要求標頭字串的MAP
headerValues  包含要求標頭字串數組的MAP
cookie  按名稱儲存請求附帶的cookie的MAP

 

例:假設我們是想要session中的name值 那麼我們可以使用:

${sessionScope.name}

再例:我們想要獲得GET或則POST傳遞過來的name參數,在以前我們只能使用:

request.getParameter(name);

 

使用EL運算式可代替為:

${param.name}

同樣,如果我們想要得到一個參數的數組,可以使用:

${paramValues.name}

當然,返回的是一個數組對象.

源自其他博主分析的jstl+el整理

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.