標籤:style java color 使用 資料 os
JSTL標籤使用說明1.EL語言介紹
EL語言是JSTL輸出(輸入)一個JAVA運算式的表示形式。
在JSTL中,EL語言只能在屬性值中使用。EL語言只能通過建立運算式${exp1}來進行調用。在屬性值中使用運算式有三種方式。
1、 value屬性包含一個運算式
在這種情況下,運算式值被計算出來並根據類型轉換規則賦值給value屬性。比如:中的${username}就是一個EL,它相當於JSP語句<%=request.getAttribute(“username”)%>或<%=session.getAttribute(“username”)%>
2、 value屬性包含一個或多個屬性,這些屬性被文本分割或圍繞
在這種情況下,運算式從左至右進行計算,並將結果轉換為字串型(根據類型轉換規則),並將結果賦值給value屬性
3、 value屬性僅僅包含文本
在這種情況下,字串型屬性value將根據類型轉換規則轉換為標籤所希望的類型。
2.EL語言的操作符
取得某個對象或集合中的屬性值
為了獲得集合中的屬性,EL支援以下兩種操作
1. 使用.操作符來獲得有名字的屬性。例如運算式${user.username}表明對象user的username屬性
2. 使用[]操作符來獲得有名字或按數字排列的屬性。
運算式${user["username"]}和運算式${user. username }含義相同
運算式${row[0]} 表明row集合的第一個條目。
在這裡user是一個類的對象,它的屬性username必須符合標準JavaBean的規範,即必須為username屬性定義相應的getter、setter方法。
3.Empty操作符(空值檢查)
使用empty操作符來決定對象、集合或字串變數是否為空白或null。例如
${empty param.username}
如果request的參數列表中的username值為null,則運算式的值為true。
EL也可以直接使用比較操作符與null進行比較。如${param.firstname == null}。
| 比較操作符 |
描述 |
| == 或 eq |
相等檢查 |
| != 或 ne |
不等檢查 |
| < 或 lt |
小於檢查 |
| > 或 gt |
大於檢查 |
| <= 或 le |
小於等於檢查 |
| >= 或 ge |
大於等於檢查 |
4.Core通用標籤
c:out 標籤用於在JSP中顯示資料,它有如下屬性
| 屬 性 |
描 述 |
是否必須 |
預設值 |
| value |
輸出的資訊,可以是EL運算式或常量 |
是 |
無 |
| default |
value為空白時顯示資訊 |
否 |
無 |
| escapeXml |
為true則避開特殊的xml字元集 |
否 |
true |
例子: 您的使用者名稱是:
顯示使用者的使用者名稱,如為空白則顯示guest,指定從session中擷取username的值顯示;
顯示username的值,預設是從request(page)中取,如果request中沒有名為username的對象則從session中取,session中沒有則從application(servletContext)中取,如果沒有取到任何值則不顯示。
<c:out value="${session.username}" default="guest" escapeXml="false"/>
c:set 標籤用於儲存資料,它有如下屬性
| 屬 性 |
描 述 |
是否必須 |
預設值 |
| value |
要儲存的資訊,可以是EL運算式或常量 |
否 |
無 |
| target |
需要修改屬性的變數名,一般為javabean的執行個體 |
否 |
無 |
| property |
需要修改的javabean屬性 |
否 |
無 |
| var |
需要儲存資訊的變數 |
否 |
無 |
| scope |
儲存資訊的變數的範圍 |
否 |
page |
如果指定了target屬性, 那麼property屬性也必須指定。
例子:
將test.testinfo的值儲存到session的test2中,其中test是一個javabean的執行個體,testinfo是test對象的屬性。
<c:set var="test2" scope="session" target="test" property="testinfo"/>, 或者:
<c:set var="test2" scope="session" value="${test.testinfo}"/>
將對象cust.address的city屬性值儲存到變數city中
<c:set var="city" value="${cust.address.city}"/>
c:remove 標籤用於刪除資料,它有如下屬性
| 屬 性 |
描 述 |
是否必須 |
預設值 |
| var |
要刪除的變數 |
是 |
無 |
| scope |
被刪除變數的範圍 |
否 |
所有範圍,包括page、request、session、application等 |
例子:
從session中刪除test2變數。
<c:remove var="city" scope="request"/>
5.流量控制標籤
c:if 標籤有如下屬性
| 屬 性 |
描 述 |
是否必須 |
預設值 |
| test |
需要評價的條件,相當於if (...){}語句中的條件 |
是 |
無 |
| var |
要求儲存條件結果的變數名 |
否 |
無 |
| scope |
儲存條件結果的變數範圍 |
否 |
page |
c:choose,c:when,c:otherwise 組合(如果...如果...如果...其他...)標籤
c:choose 這個標籤不接受任何屬性
c:when 標籤有以下屬性
| 屬 性 |
描 述 |
是否必須 |
預設值 |
| test |
需要評價的條件 |
是 |
無 |
c:otherwise 這個標籤同樣不接受任何屬性
例子:
只有當條件user.generous傳回值是true時,才顯示user.generous
只有當條件user.stingy傳回值是true時,才顯示user.stingy
其它所有的情況(即user.generous和user.stingy的值都不為true)全部顯示user.generous and user.stingy.
<c:choose>
<c:when test="${user.generous}"><c:out value="${user.generous}"/></c:when>
<c:when test="${user.stingy}"><c:out value="${user.stingy}"/></c:when>
<c:otherwise><c:out value="${user.generous} and {user.stingy}"/></otherwise>
</c:choose>
由於JSTL沒有形如if (){…} else {…}的條件陳述式,所以這種形式的語句只能用、和標籤共同來完成了。
6.迴圈控制標籤
c:forEach 標籤用於通用資料,它有以下屬性
| 屬 性 |
描 述 |
是否必須 |
預設值 |
| items |
進行迴圈的項目(是一個集合) |
否 |
無 |
| begin |
開始條件 |
否 |
0 |
| end |
結束條件 |
否 |
集合中的最後一個項目 |
| step |
步長 |
否 |
1 |
| var |
代表當前項目的變數名 |
否 |
無 |
| varStatus |
顯示迴圈狀態的變數 |
否 |
無 |
varStatus 變數的其他屬性:
.index 索引號,從 0 開始計算
.count 量值,從 1 開始計算
.first 判斷當前對象是不是集合中第一個對象
.last 判斷當前對象是不是集合中最後一個對象