程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA綜合教程 >> JSTL和EL的使用,JSTLEL使用

JSTL和EL的使用,JSTLEL使用

編輯:JAVA綜合教程

JSTL和EL的使用,JSTLEL使用


JSTL和EL的使用

使用JSTL前的准備

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

JSTL標簽庫

在JSTL中分為以下五個標簽

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

核心標簽(Core):

引入標簽庫

<%@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 那麼它會以:

為順序來進行查找,加入中途找到了 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}

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

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved