pageContext
一个javax.servlet. jsp.PageContext类的实例, 用来提供访问不同的请求数据
操作符描述了你对变量所期望的操作。如果你之前曾经使用过任何编程语言的话,在EL表达式中所使用的操作符对你来说可能看起来很熟悉。因为它们和那些在大多数语言中所支持的操作符一样。
Operator
Description
.
访问一个bean属性或者 Map entry
[]
访问一个数组或者链表元素
()
对子表达式分组,用来改变赋值顺序
:
条件语句,比如: 条件 ifTrue : ifFalse.如果条件为真,表达式值为前者,反之为后者
+
数学运算符,加操作
-
数学运算符,减操作或者对一个值取反
*
数学运算符,乘操作
/ or div
数学运算符,除操作
% or mod
数学运算符,模操作(取余)
== or eq
逻辑运算符,判断符号左右两端是否相等,如果相等返回true,否则返回false
!= or ne
逻辑运算符,判断符号左右两端是否不相等,如果不相等返回true,否则返回false
< or lt
逻辑运算符,判断符号左边是否小于右边,如果小于返回true,否则返回false
> or gt
逻辑运算符,判断符号左边是否大于右边,如果大于返回true,否则返回false
<= or le
逻辑运算符,判断符号左边是否小于或者等于右边,如果小于或者等于返回true,否则返回false
>= or ge
逻辑运算符,判断符号左边是否大于或者等于右边,如果大于或者等于返回true,否则返回false
&& or and
逻辑运算符,与操作赋。如果左右两边同为true返回true,否则返回false
|| or or
逻辑运算符,或操作赋。如果左右两边有任何一边为true返回true,否则返回false
! or not
逻辑运算符,非操作赋。如果对true取运算返回false,否则返回true
empty
用来对一个空变量值进行判断: null、一个空String、空数组、 空Map、没有条目的Collection集合
func(args)
调用方法, func是方法名,args是参数,可以没有,或者有一个、多个参数.参数间用逗号隔开
一个EL表达式可以包含:数字、文本(在单引号或者双引号之间)、布尔值、null值。
因为一个EL表达式可以出现在静态文本出现的地方,因此你必须告诉JSP容器它应该被当作一个EL表达式来处理。你可以通过使用定界符来做到这一点。一个EL表达式总是以”${ }”来标记(一个“$”符号和一个左花括号,右花括号)。这里有一个EL表达式,它将一个命名为amount的变量加5:
${amount + 5}
如果你想要将5加到一个bean的property上,可以使用property访问操作符:
在当前这个指定的bean或者collection集合中,Property访问操作符(一个“.“符号)告诉EL去寻找名字为amount的property。
${order['amount'] + 5}
在[]之间的值必须是一个property的名字(就像上面的例子中那样)或者是一个保存property名字的变量(或者是一个完整的EL子表达式)。
EL表达式可以被用来赋值给任何标准的或者定制的JSP行为属性(action attribute),这些行为属性被标记为可以接受动态值(或者请求期间的属性值,就象它被正式调用一样):
在JSP 2.0之前,你不得不使用 Java表达式去给一个属性动态赋值。在过去的很多年中,这已经成为语法混乱的一个普遍根源。
最后,EL表达式可以在页面中和模板直接混合使用。当你生成HTML并且需要设置一个动态值给一个属性的时候,这非常方便:
JSP 1.2中,你不得不使用JSTL的
value="
新JSTL 1.1 Tag Library 标识符
JSTL1.1发布的是一个初级的版本,主要目的是用来整合JSTL和JSP2.0 。最明显的变化是JSTL1.0 “孪生函数库”(一组库用来接受EL表达式,另外一组用来接受JAVA表达式),而它们已经被一组既可以用于EL表达式也可以用于JAVA表达式的函数库所代替。
在JSTL 1.1中使用以下标识符:
库
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
如果你曾经使用过JSTL1.0,你可能会注意到新的标识符和旧的EL库标试符一模一样,除了加入了“/jsp path” element。你也可能注意到在JSTL1.1中有一个库,包含了EL的函数。我们稍后就会看到。
一个新的EL操作符
在JSP页面中一个非常普遍的需求就是:当某个条件为真时,要在网页中包含一些文字。在JSP1.2和JSTL1.1中,用具有代表性的
一个能清楚说明它如何工作的例子:
在这里,我使用了EL表达式和条件操作符来选择是否包含 html 中的 “selected”属性,只有符合条件的 “option” 才被添加 “selected” 属性。如果条件(param.artist==1)为真时,前面的“selected” 才被添加到网页中;否则就添加后面的(在这里是空字符串 ‘’)到页面中。
EL函数
当EL从JSTL规范中移到JSP规范中,它使用了一个如何进行函数调用的技巧。这个EL函数语法非常简单:方法名,紧接着在圆括号中有一组参数:
<%@ taglib prefix="fn"
uri="http://java.sun.com/jsp/jstl/functions" %>
${fn:length(myCollection)}
这是一个属于标签库中的函数,并且函数名字在页面中所包含的前缀要指定taglib库。在这个例子中,我使用了前缀fn,这是JSTL function库默认的前缀。
标签库描述符(Tag Library Descriptor,TLD)将函数名称映射到一个由JAVA实现的静态方法中:
Returns the number of items in a collection or the number of char