一个EL表达式包含变量和操作符。任何存储在某个JSP作用范围(如:page、 request、session、application)的bean能被作为一个EL变量来使用。另外,EL支持以下预定义的变量:
变量名称 | 说明 |
pageScope | 一个包含所有page scope范围的变量集合 (a java.util.Map) |
requestScope | 一个包含所有request scope范围的变量集合 (a java.util.Map) |
sessionScope | 一个包含所有session scope范围的变量集合 (a java.util.Map) |
applicationScope | 一个包含所有application scope范围的变量集合 (a java.util.Map) |
param | 一个包含所有请求参数的集合 (a java.util.Map),通过每个参数对应一个String值的方式赋值 |
paramValues | 一个包含所有请求参数的集合 (a java.util.Map),通过每个参数对应一个String数组的方式赋值 |
header | 一个包含所有请求的头信息的集合, (a java.util.Map) ,通过每个头信息对应一个String值的方式赋值 |
headerValues | 一个包含所有请求的头信息的集合 (a java.util.Map) ,通过每个头信息的值都保存在一个String数组的方式赋值 |
cookie | 一个包含所有请求的 cookie集合 (a java.util.Map), 通过每一个cookie(javax.servlet.http.Cookie)对应一个cookie值的方式赋值 |
initParam | 一个包含所有应用程序初始化参数的集合(a java.util.Map) ,通过每个参数分别对应一个String值的方式赋值 |
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表达式总是以”${ }”来标记(一个“$”符号和一个左花括号,右花括号)。
除了在这个方法中使用的length()方法,JSTL1.1标签库还包含了许多其它经常使用的函数:
函数 | 描述 |
fn:contains(string, substring) | 如果参数string中包含参数substring,返回true |
fn:containsIgnoreCase(string, substring) | 如果参数string中包含参数substring(忽略大小写),返回true |
fn:endsWith(string, suffix) | 如果参数 string 以参数suffix结尾,返回true |
fn:escapeXml(string) | 将有特殊意义的XML (和HTML)转换为对应的XML character entity code,并返回 |
fn:indexOf(string, substring) | 返回参数substring在参数string中第一次出现的位置 |
fn:join(array, separator) | 将一个给定的数组array用给定的间隔符separator串在一起,组成一个新的字符串并返回。 |
fn:length(item) | 返回参数item中包含元素的数量。参数Item类型是数组、collection或者String。如果是String类型,返回值是String中的字符数。 |
fn:replace(string, before, after) | 返回一个String对象。用参数after字符串替换参数string中所有出现参数before字符串的地方,并返回替换后的结果 |
fn:split(string, separator) | 返回一个数组,以参数separator 为分割符分割参数string,分割后的每一部分就是数组的一个元素 |
fn:startsWith(string, prefix) | 如果参数string以参数prefix开头,返回true |
fn:substring(string, begin, end) | 返回参数string部分字符串, 从参数begin开始到参数end位置,包括end位置的字符 |
fn:substringAfter(string, substring) | 返回参数substring在参数string中后面的那一部分字符串 |
fn:substringBefore(string, substring) | 返回参数substring在参数string中前面的那一部分字符串 |
fn:toLowerCase(string) | 将参数string所有的字符变为小写,并将其返回 |
fn:toUpperCase(string) | 将参数string所有的字符变为大写,并将其返回 |
fn:trim(string) | 去除参数string 首尾的空格,并将其返回 |