EL
表達式中還有許多操作符可以幫助完成各種所需的操作,之前的示例中“
.
”、“
[]
”就是其中的兩個,下面將用表
9.1
來展示所有操作符及它們各自的功能。
表
9.1? EL
表達式的操作符
操作符
|
功能和作用
|
.
|
訪問一個
bean
屬性或者
Map entry
|
[]
|
訪問一個數組或者鏈表元素
|
()
|
對子表達式分組,用來改變賦值順序
|
? :
|
條件語句,比如:條件
?ifTrue:ifFalse
如果條件為真,表達式值為前者,反之為后者
|
+
|
數學運算符,加操作
|
-
|
數學運算符,減操作或者對一個值取反
|
*
|
數學運算符,乘操作
|
/
或
div
|
數學運算符,除操作
|
%
或
mod
|
數學運算符,模操作
(
取余
)
|
==
或
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
|
用來對一個空變量值進行判斷
: null
、一個空
String
、空數組、
空
Map
、沒有條目的
Collection
集合
|
func(args)
|
調用方法
, func
是方法名,
args
是參數,可以沒有,或者有一個、多個參數
.
參數間用逗號隔開
|
這些操作符都是極其有用的,下面通過幾個示例來演示它們的使用方法:
例
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
控件
可以看到,對于這些示例,程序設計者完全無需管理它們的類型轉換,在表達式內部都已經處理了。有了
EL
表達式,在
JSP
頁面的編程變得更靈活,也更容易。
在
JSTL1.1
中有以下這些標簽庫是被支持的:
Core
標簽庫、
XML processing
標簽庫、
I18N formatting
標簽庫、
Database access
標簽庫、
Functions
標簽庫。對應的標識符見表
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
,簡單使用標簽庫的示例。
例
9.5
:簡單
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
頁面中聲明了將使用
Core
標簽庫,它的
URI
為“
http://java.sun.com/jsp/jstl/core
”,前綴為“
c
”。之后,頁面中
<c:forEach>
標簽就是使用了
JSTL
的標簽進行了工作。對于該標簽的功能,這里暫時不作具體講解,只是讓讀者能夠有個簡單的概念,了解怎樣定義和使用標簽庫。
Core
標簽庫,又被稱為核心標簽庫,該標簽庫的工作是對于
JSP
頁面一般處理的封裝。在該標簽庫中的標簽一共有
14
個,被分為了四類,分別是:
q????????
多用途核心標簽:
<c:out>
、
<c:set>
、
<c:remove>
、
<c:catch>
。
q????????
條件控制標簽:
<c:if>
、
<c:choose>
、
<c:when>
、
<c:otherwise>
。
q????????
循環控制標簽:
<c:forEach>
、
<c:forTokens>
。
q????????
URL
相關標簽:
<c:import>
、
<c:url>
、
<c:redirect>
、
<c:param>
。
以下是各個標簽的用途和屬性以及簡單示例。
9.3.1?
用于顯示的
<c:out>
標簽
<c:out>
標簽是一個最常用的標簽,用于在
JSP
中顯示數據。它的屬性和描述如表
9.3
所示:
表
9.3
<c:out>
標簽屬性和說明
屬性
|
描述
|
value
|
輸出到頁面的數據,可以是
EL
表達式或常量(必須)
|
default
|
當
value
為
null
時顯示的數據(可選)
|
escapeXml
|
當設置為
true
時會主動更換特殊字符,比如“
<,>,&
”(可選,默認為
true
)
|
在
JSTL1.0
的時候,在頁面顯示數據必須使用
<c:out>
來進行。然而,在
JSTL1.1
中,由于
JSP2.0
規范已經默認支持了
EL
表達式
,因此可以直接在
JSP
頁面使用表達式。下面看一個示例。
<c:out value="${sessionScope.anyValue}" default="no value" escapeXml="false"/>
該示例將從
Session
查找名為“
anyValue
”的參數,并顯示在頁面,若沒有找到則顯示“
no value
”。