一.jsp禁用EL表达式的三种方式
1.使用斜杠"\"符号
\${expression}
2.使用page指令
<%@ pageisELIgnored="true|false"%>
3.在web.xml文件中配置<el-ignored>元素
<jsp-config>
<jsp-property-group>
<url-pattern>*.jsp</url-pattern>
<el-ignored>true</el-ignored>
</jsp-property-group>
</jsp-config>
二.EL表达式的基本语法
在页面中输出字符串可以如下使用
${"hello world"}
三.EL表达式的运算符
1.存取数据运算符[]和.
通常情况,我们可以通过"."运算符获得指定对象的属性。
但当属性中包含一些特殊符号("."或者"-"等非字母或数字符号)时,可以用[]格式访问属性值。
如:${sessionScope.user[user-name]}
同样,可以使用"[]"运算符来读取数组
如:${sessionScope.fruit[1]}
Map集合元素的获取,假如有一个key为fruit的键值对,我们可以如下获取
如:${sessionScope.fruit["frutit"]}
2.算术运算符(+、-、*、/或div、%或mod)
注:%或者mod为求余运算符
如:${15%4} 返回值为3
3.关系运算符
==或eq 等于
!=或ne 不等于
<或lt 小于
>或gt 大于
<=或le 小于等于
>=或ge 大于等于
注意:在使用EL表达式关系运算符时,不能够写成:
${param.pwd1} == ${param.pwd2}
或
${${param.pwd1} == ${param.pwd2}}
而应写成:
${param.pwd1 == param.pwd2}
4.逻辑运算符
1.&&或and运算符
2.||或or运算符
3.!或not运算符
${! username == "mr"}
5.empty运算符(特殊的运算符)
用来确定一个对象或者变量是否为null或者空。
${empty expression}
同时可以跟not运算符结合使用,用于确定一个对象或者变量是否为非空。
${not empty expression}
6.条件运算符
${条件表达式?计算表达式1:计算表达式2}
${empty user ? "user is null ": user}
EL表达式Map取值的隐含问题(转自:http://liuhanjun.iteye.com/blog/898275)
- HashMap<Integer, String> numberMap= new HashMap<Integer, String>();
- numberMap.put(0, "零");
- numberMap.put(1, "一");
在jsp页面中${numberMap[1]}将取不到值,因为el表达式中数字1是Long类型(好BT啊,都没加L啊),无法匹配到numberMap中的Integer 1 。明白了原理,事儿就好办了。修改numberMap:
- HashMap<Long, String> map = new HashMap<Long, String>();
- map.put(0L, "零");
- map.put(1L, "一");
然后就随心所欲哈${numberMap[1]},${numberMap[1 - 1]}均可取到值。
四.EL函数介绍(转自:yunyun050924 )
1:fn:toLowerCase函数将一个字符串中包含的所有字符转换为小写形式,并返回转换后的字符串,它接收一个字符串类型的参数。
例如:
- fn:toLowerCase("Www.IT315.org") 的返回值为字符串“www.it315.org”
- fn:toLowerCase("")的返回值为空字符串
2:fn:toUpperCase函数将一个字符串中包含的所有字符转换为大写形式,并返回转换后的字符串,它接收一个字符串类型的参数。
例如:
- fn:toUpperCase("Www.IT315.org") 的返回值为字符串“WWW.IT315.ORG”
- fn:toUpperCase("")的返回值为空字符串
3:fn:trim函数删除一个字符串的首尾的空格,并返回删除空格后的结果字符串,它接收一个字符串类型的参数。需要注意的是,fn:trim函数不能删除字符串中间位置的空格。
例如:
- fn:trim(" www.it315.org ") 的返回值为字符串“www.it 315.org”。
4:fn:length函数返回一个集合或数组大小,或返回一个字符串中包含的字符的个数,返回值为int类型。fn:length函数接收一个参数,这个参数可以是<c:forEach>标签的items属性支持的任何类型,包括任意类型的数组、java.util.Collection、java.util.Iterator、java.util.Enumeration、java.util.Map等类的实例对象和字符串。
如果fn:length函数的参数为null或者是元素个数为0的集合或数组对象,则函数返回0;如果参数是空字符串,则函数返回0。
5:fn:split函数以指定字符串作为分隔符,将一个字符串分割成字符串数组并返回这个字符串数组。
fn:split函数接收两个字符串类型的参数,第一个参数表示要分割的字符串,第二个参数表示作为分隔符的字符串。
例如:
- fn:split("www.it315.org", ".")[1]的返回值为字符串“it315”。
6:fn:join函数以一个字符串作为分隔符,将一个字符串数组中的所有元素合并为一个字符串并返回合并后的结果字符串。fn:join函数接收两个参数,第一个参数是要操作的字符串数组,第二个参数是作为分隔符的字符串。
如果fn:join函数的第二个参数是空字符串,则fn:join函数的返回值直接将元素连接起来。
例如:
假设stringArray是保存在Web域中的一个属性,它表示一个值为{"www","it315","org"}的字符串数组,则
- fn:join(stringArray, “.")返回字符串“www.it315.org”
- fn:join(fn:split("www,it315,org", ","), ".") 的返回值为字符串www.it315.org”
7:fn:indexOf函数返回指定字符串在一个字符串中第一次出现的索引值,返回值为int类型。fn:indexOf函数接收两个字符串类型的参数,如果第一个参数字符串中包含第二个参数字符串,那么,不管第二个参数字符串在第一个参数字符串中出现几次,fn:indexOf函数总是返回第一次出现的索引值;如果第一个参数中不包含第二个参数,则fn:indexOf函数返回-1。如果第二个参数为空字符串,则fn:indexOf函数总是返回0。
例如:
- fn:indexOf("www.it315.org","t3") 的返回值为5
8:fn:contains函数检测一个字符串中是否包含指定的字符串,返回值为布尔类型。fn:contains函数在比较两个字符串是否相等时是大小写敏感的。
fn:contains函数接收两个字符串类型的参数,如果第一个参数字符串中包含第二个参数字符串,则fn:contains函数返回true,否则返回false。如果第二个参数的值为空字符串,则fn:contains函数总是返回true。实际上,
- fn:contains(string, substring)等价于fn:indexOf(string, substring) != -1。
- 忽略大小的EL函数:fn:containsIgnoreCase
9:fn:startsWith函数用于检测一个字符串是否是以指定字符串开始的,返回值为布尔类型。
fn:startsWith函数接收两个字符串类型的参数,如果第一个参数字符串以第二个参数字符串开始,则函数返回true,否则函数返回false。如果第二个参数为空字符串,则fn:startsWith函数总是返回true。
例如:
- fn:startsWith("www.it315.org","it315")的返回值为false
- 与之对应的EL函数:fn:endsWith
10:fn:replace函数将一个字符串中包含的指定子字符串替换为其它的指定字符串,并返回替换后的结果字符串。fn:replace方法接收三个字符串类型的参数,第一个参数表示要操作的源字符串,第二个参数表示源字符串中要被替换的子字符串,第三个参数表示要被替换成的字符串。
例如:
- fn:replace("www it315 org", " ", ".")的返回值为字符串“www.it315.org”
11:fn:substring函数用于截取一个字符串的子字符串并返回截取到的子字符串。fn:substring函数接收三个参数,第一个参数是用于指定要操作的源字符串,第二个参数是用于指定截取子字符串开始的索引值,第三个参数是用于指定截取子字符串结束的索引值,第二个参数和第三个参数都是int类型,其值都从0开始。
例如:
- fn:substring("www.it315.org", 4, 9) 的返回值为字符串“it315”
13:fn:substringAfter函数用于截取并返回一个字符串中的指定子字符串第一次出现之后的子字符串。fn:substringAfter函数接收两个字符串类型的参数,第一个参数表示要操作的源字符串,第二个参数表示指定的子字符串。
例如:
- fn:substringAfter(“www.it315.org”, “.”)的返回值为字符串“it315.org”。
- 与之对应的EL函数为:fn:substringBefore