分類(lèi):
我的著(zhù)作表達式的操作符
EL表達式中還有許多操作符可以幫助完成各種所需的操作,之前的示例中“.”、“[]”就是其中的兩個(gè),下面將用表9.1來(lái)展示所有操作符及它們各自的功能。
表9.1 EL表達式的操作符
操作符
功能和作用
.
訪(fǎng)問(wèn)一個(gè)bean屬性或者 Map entry
[]
訪(fǎng)問(wèn)一個(gè)數組或者鏈表元素
()
對子表達式分組,用來(lái)改變賦值順序
:
條件語(yǔ)句,比如:條件ifTrue:ifFalse
如果條件為真,表達式值為前者,反之為后者
+
數學(xué)運算符,加操作
-
數學(xué)運算符,減操作或者對一個(gè)值取反
*
數學(xué)運算符,乘操作
/ 或 div
數學(xué)運算符,除操作
% 或 mod
數學(xué)運算符,模操作(取余)
== 或 eq
邏輯運算符,判斷符號左右兩端是否相等,如果相等返回true,否則返回false
!= 或 ne
邏輯運算符,判斷符號左右兩端是否不相等,如果不相等返回true,否則返回false
< 或 lt
邏輯運算符,判斷符號左邊是否小于右邊,如果小于返回true,否則返回false
> 或 gt
邏輯運算符,判斷符號左邊是否大于右邊,如果大于返回true,否則返回false
<= 或 le
邏輯運算符,判斷符號左邊是否或者等于右邊,如果小于或者等于返回true,否則返回false
>= 或 ge
邏輯運算符,判斷左邊是否大于或者等于右邊,如果大于或者等于返回true,否則返回false
&& 或 and
邏輯運算符,與操作賦。如果左右兩邊同為true返回true,否則返回false
|| 或 or
邏輯運算符,或操作賦。如果左右兩邊有任何一邊為true返回true,否則返回false
! 或 not
邏輯運算符,非操作賦。如果對true取運算返回false,否則返回true
empty
用來(lái)對一個(gè)空變量值進(jìn)行判斷: null、一個(gè)空String、空數組、 空Map、沒(méi)有條目的Collection集合
func(args)
調用方法, func是方法名,args是參數,可以沒(méi)有,或者有一個(gè)、多個(gè)參數.參數間用逗號隔開(kāi)
這些操作符都是極其有用的,下面通過(guò)幾個(gè)示例來(lái)演示它們的使用方法:
例9.4:幾組的示例
${pageScope.sampleValue + 12} <br> //顯示12
${(pageScope.sampleValue + 12)/3} <br> //顯示4.0
${(pageScope.sampleValue + 12) /3==4} <br> //顯示true
${(pageScope.sampleValue + 12) /3>=5} <br> //顯示false
<input type="text" name="sample1" value="${pageScope.sampleValue + 10}"> //顯示值為10的Text控件
可以看到,對于這些示例,程序設計者完全無(wú)需管理它們的類(lèi)型轉換,在表達式內部都已經(jīng)處理了。有了EL表達式,在JSP頁(yè)面的編程變得更靈活,也更容易。
標簽庫介紹
在JSTL1.1中有以下這些標簽庫是被支持的:Core標簽庫、XML processing標簽庫、I18N formatting標簽庫、Database access標簽庫、Functions標簽庫。對應的標識符見(jiàn)表9.2所示:
表9.2 標簽庫的
標簽庫
URI
前綴
Core
http://java.sun.com/jsp/jstl/core
c
XML processing
http://java.sun.com/jsp/jstl/xml
x
I18N formatting
http://java.sun.com/jsp/jstl/fmt
fmt
Database access
http://java.sun.com/jsp/jstl/sql
sql
Functions
http://java.sun.com/jsp/jstl/functions
fn
下面看例9.5,簡(jiǎn)單使用標簽庫的示例。
例9.5:簡(jiǎn)單JSTL標簽庫示例
<%@ page contentType="text/html; charset=UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<body>
<c:forEach var="i" begin="1" end="10" step="1">
${i}
<br />
</c:forEach>
</body>
</html>
在該示例的JSP頁(yè)面中聲明了將使用Core標簽庫,它的URI為“http://java.sun.com/jsp/jstl/core”,前綴為“c”。之后,頁(yè)面中<c:forEach>標簽就是使用了JSTL的標簽進(jìn)行了工作。對于該標簽的功能,這里暫時(shí)不作具體講解,只是讓讀者能夠有個(gè)簡(jiǎn)單的概念,了解怎樣定義和使用標簽庫。
標簽庫
Core標簽庫,又被稱(chēng)為核心標簽庫,該標簽庫的工作是對于JSP頁(yè)面一般處理的封裝。在該標簽庫中的標簽一共有14個(gè),被分為了四類(lèi),分別是:
q 多用途核心標簽:<c:out>、<c:set>、<c:remove>、<c:catch>。
q 條件控制標簽:<c:if>、<c:choose>、<c:when>、<c:otherwise>。
q 循環(huán)控制標簽:<c:forEach>、<c:forTokens>。
q URL相關(guān)標簽:<c:import>、<c:url>、<c:redirect>、<c:param>。
以下是各個(gè)標簽的用途和屬性以及簡(jiǎn)單示例。
用于顯示的<c:out>標簽
<c:out>標簽是一個(gè)最常用的標簽,用于在JSP中顯示數據。它的屬性和描述如表9.3所示:
表9.3 <c:out>標簽屬性和說(shuō)明
屬性
描述
value
輸出到頁(yè)面的數據,可以是EL表達式或常量(必須)
default
當value為null時(shí)顯示的數據(可選)
escapeXml
當設置為true時(shí)會(huì )主動(dòng)更換特殊字符,比如“<,>,&”(可選,默認為true)
在JSTL1.0的時(shí)候,在頁(yè)面顯示數據必須使用<c:out>來(lái)進(jìn)行。然而,在JSTL1.1中,由于JSP2.0規范已經(jīng)默認支持了EL,因此可以直接在JSP頁(yè)面使用表達式。下面看一個(gè)示例。
<c:out value="${sessionScope.anyValue}" default="no value" escapeXml="false"/>
該示例將從Session查找名為“anyValue”的,并顯示在頁(yè)面,若沒(méi)有找到則顯示“no value”。