JSTL標籤使用總結

1.EL語言介紹

EL語言是JSTL輸出(輸入)一個JAVA表達式的表示形式。java

在JSTL中,EL語言只能在屬性值中使用。EL語言只能經過創建表達式${exp1}來進行調用。在屬性值中使用表達式有三種方式。session

一、 value屬性包含一個表達式app

在這種狀況下,表達式值被計算出來並根據類型轉換規則賦值給value屬性。好比:中的${username}就是一個EL,它至關於JSP語句<%=request.getAttribute(「username」)%>或<%=session.getAttribute(「username」)%>spa

二、 value屬性包含一個或多個屬性,這些屬性被文本分割或圍繞xml

在這種狀況下,表達式從左到右進行計算,並將結果轉換爲字符串型(根據類型轉換規則),並將結果賦值給value屬性對象

三、 value屬性僅僅包含文本索引

在這種狀況下,字符串型屬性value將根據類型轉換規則轉換爲標籤所但願的類型。ci

2.EL語言的操做符

取得某個對象或集合中的屬性值rem

爲了得到集合中的屬性,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 判斷當前對象是否是集合中最後一個對象

相關文章
相關標籤/搜索