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
取得某個對象或集合中的屬性值rem
爲了得到集合中的屬性,EL支持如下兩種操做字符串
1. 使用.操做符來得到有名字的屬性。例如表達式${user.username}代表對象user的username屬性
2. 使用[]操做符來得到有名字或按數字排列的屬性。
表達式${user["username"]}和表達式${user. username }含義相同
表達式${row[0]} 代表row集合的第一個條目。
在這裏user是一個類的對象,它的屬性username必須符合標準JavaBean的規範,即必須爲username屬性定義相應的getter、setter方法。
使用empty操做符來決定對象、集合或字符串變量是否爲空或null。例如
${empty param.username}
若是request的參數列表中的username值爲null,則表達式的值爲true。
EL也能夠直接使用比較操做符與null進行比較。如${param.firstname == null}。
比較操做符 | 描述 |
---|---|
== 或 eq | 相等檢查 |
!= 或 ne | 不等檢查 |
< 或 lt | 小於檢查 |
> 或 gt | 大於檢查 |
<= 或 le | 小於等於檢查 |
>= 或 ge | 大於等於檢查 |
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"/>
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 {…}的條件語句,因此這種形式的語句只能用、和標籤共同來完成了。
c:forEach 標籤用於通用數據,它有如下屬性
屬 性 | 描 述 | 是否必須 | 缺省值 |
---|---|---|---|
items | 進行循環的項目(是一個集合) | 否 | 無 |
begin | 開始條件 | 否 | 0 |
end | 結束條件 | 否 | 集合中的最後一個項目 |
step | 步長 | 否 | 1 |
var | 表明當前項目的變量名 | 否 | 無 |
varStatus | 顯示循環狀態的變量 | 否 | 無 |
varStatus 變量的其餘屬性:
.index 索引號,從 0 開始計算
.count 量值,從 1 開始計算
.first 判斷當前對象是否是集合中第一個對象
.last 判斷當前對象是否是集合中最後一個對象