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
”。