EL 全名为Expression Language
EL都是以${为起始、以}为结尾的;
.与 [ ] 运算符
EL 提供 . 和 [ ] 两种运算符来导航数据。下列两者所代表的意思是一样的:
${sessionScope.user.sex}等于${sessionScope.user["sex"]}
. 和 [ ] 也可以同时混合使用,如下:
${sessionScope.shoppingCart[0].price}
回传结果为shoppingCart中第一项物品的价格。
不过,以下两种情况,两者会有差异:
(1) 当要存取的属性名称中包含一些特殊字符,如. 或 – 等并非字母或数字的符号,就一定要使用 [ ],例如:${user.My-Name }
上述是不正确的方式,应当改为:${user["My-Name"]}
(2) 我们来考虑下列情况:
${sessionScope.user[data]}
此时,data 是一个变量,假若data的值为"sex"时,那上述的例子等于${sessionScope.user.sex};
假若data 的值为"name"时,它就等于${sessionScope.user.name}。因此,如果要动态取值时,就可以用上述的方法来做,但. 无法做到动态取值。
EL关系运算符
关系运算符 | 说明 | 范例 | 结果 |
== 或 eq | 等于 | ${5==5}或${5eq5} | true |
!= 或 ne | 不等于 | ${5!=5}或${5ne5} | false |
< 或 lt | 小于 | ${3<5}或${3lt5} | true |
> 或 gt | 大于 | ${3>5}或{3gt5} | false |
<= 或 le | 小于等于 | ${3<=5}或${3le5} | true |
>= 或 ge | 大于等于 | 5}或${3ge5} | false |
表达式语言不仅可在数字与数字之间比较,还可在字符与字符之间比较,字符串的比较是根据其对应UNICODE值来比较大小的。
注意:在使用EL 关系运算符时,不能够写成:
${param.password1} = = ${param.password2}
或者
${ ${param.password1 } = = ${ param.password2 } }
而应写成
${ param.password1 = = param.password2 }
EL逻辑运算符
逻辑运算符 | 范例 | 结果 |
&&或and | 交集${A && B}或${A and B} | true/false |
||或or | 并集${A || B}或${A or B} | true/false |
!或not | 非${! A }或${not A} | true/false |
Empty 运算符
Empty 运算符主要用来判断值是否为空(NULL,空字符串,空集合)。
条件运算符
${ A ? B : C}