引用:http://www.blogjava.net/laoding/articles/231368.html
EL元素必须以${开始,以}结束。
EL元素可以出现在模板文本中,也可以出现在jsp标记的属性中。
1、EL变量范围:
在EL中访问变量的值可以直接使用 ${ 变量名 } or ${ sessionScope.username }
规则:默认情况下,JSP引引擎会按照page、request、session、application的范围搜索user关键字,然后将该对象取出,并显示其对应的成员。如果在以上的范围中有同名的key关键字,这样就会出现问题,而且让JSP引擎去搜索所有的范围,会降低效率。所以,我们需要给出一个范围,通过以下的方式:
示例 |
含义 |
${pageScope.user.name} |
从page范围内取出对象 |
${requestScope.user.name} |
从request范围内取出对象 |
${sessionScope.user.name} |
从session范围内取出对象 |
${applicationScope.user.name} |
从application范围内取出对象 |
2、EL关键字(16个):
and |
eq |
gt |
ge |
true |
instanceof |
null |
div |
or |
ne |
lt |
not |
false |
le |
empty |
mod |
3、访问运算符.和[ ]:
EL使用访问运算符“.“和”[ ]“来存取数据。
访问运算符“.“通常用于引用一个对象的属性。例如,访问person对象的name属性:
${person.name}在这种情况下,运算符.和[ ]可以相互替换使用。${person[“name“]}。
.和[ ] 也可混合使用${sessionScope。Cart[0].price}
差异:当存取的属性名包括特殊字符(如“.“或”-“等)
“[ ]“运算符比”.“ 运算符能更好支持动态取值的情况。
4、算术运算:
EL支持通用的算术运算,包括+ - * / %
可以使用div代表除法( / )运算,使用mod代表模( % )运算。
算术运算符的优先级:
注意:除法中,如果除以0,返回值为无穷大而不是错误。
5、关系运算:
EL支持通用的关系运算,包括:= != < > <= >=
也可以使用 eq ne lt gt le ge
EL关系运算的优先顺序低于算术运算,关系运算的优先顺序是:
1) <,>,<=,>=
2) == ,!=
3) EL中使用条件判断:
操作 |
描述 |
示例 |
结果 |
==(eq) |
是否相等 |
${5==5} |
True |
!=(ne) |
是否不等 |
${5!=5} |
false |
<(lt) |
是否小于 |
${5<7} |
True |
>(gt) |
是否大于 |
${5>7} |
false |
<=(le) |
是否小于等于 |
${5 le 5} |
true |
>=(ge) |
是否大于等于 |
${5 ge 6} |
false |
l 判断一个变量是否为空:
例如:${empty param.choice}${empty sessionScope.userName}
6、逻辑运算:与&&、或|| 、非!
优先级低于关系运算符,逻辑运算符之间的优先顺序:
1.!(not)
2.&& (and)
3.|| (or)
7、empty运算符
在EL中有一个特殊的运算符empty,如果操作数值为null返回true,或者操作数本身是一个空的容器、空的数组或长度为0的字符串等也返回true。
注:空容器指的是不包含任何元素的容器。空数组表示其大小为0的数组。
8、自动类型转换
EL支持自动类型转换