EL
表达式的出现使得我们可以更方便地访问JavaBean
中的数据,同时既可以用EL
表达式创建算数表达式,也可以用来创建路基表达式。
在EL
表达式中,我们可以使用整型数,浮点数,字符串,常量true
、false
,还有null
。
使用
首先我们需要在jsp
页面中开启EL
表达式支持:
<!-- true:禁用EL表达式 -- false:启用EL表达式 -->
<%@ page isELIgnored ="true|false" %>
EL表达式的语法:
${expr}
jsp
页面在编译时,会产生代码来计算表达式,并且用计算结果(并非总是一个确定的值)来替代这个表达式的值。
读取对象
在EL
表达式中,.
和[]
都可以读取目标中的对象:
${sessionScope.name}
等价于:
${sessionScope["name"]}
操作符
EL
表达式支持大部分Java
所提供的算术和逻辑操作符:
操作符 | 描述 |
---|---|
. | 访问一个Bean属性或者一个映射条目 |
[] | 访问一个数组或者链表的元素 |
( ) | 组织一个子表达式以改变优先级 |
+ | 加 |
- | 减或负 |
* | 乘 |
/ or div | 除 |
% or mod | 取模 |
== or eq | 测试是否相等 |
!= or ne | 测试是否不等 |
< or lt | 测试是否小于 |
> or gt | 测试是否大于 |
<= or le | 测试是否小于等于 |
>= or ge | 测试是否大于等于 |
&& or and | 测试逻辑与 |
|| or or | 测试逻辑或 |
! or not | 测试取反 |
empty | 测试是否空值 |
? : | 三目运算符 |
使用函数
在EL
表达式中可以使用被定义在自定义标签库中的函数,语法如下:
${namespace:function_name(param1, param2, ...)}
隐式对象
LE表达式中包含以下隐式对象:
隐含对象 | 描述 |
---|---|
pageScope | page 作用域 |
requestScope | request 作用域 |
sessionScope | session 作用域 |
applicationScope | application 作用域 |
param Request | 对象的参数,字符串 |
paramValues | Request对象的参数,字符串集合 |
header | HTTP 信息头,字符串 |
headerValues | HTTP 信息头,字符串集合 |
initParam | 上下文初始化参数 |
cookie | Cookie值 |
pageContext | 当前页面的pageContext |
request
中的参数可以通过${requestScope.attributeName}
,也可以直接通过${attributeName}
来获取。
如果是URL
后面跟着的参数如:
https://www.vingyun.com/test?nickname=ving
则需要通过${param.nickname}
的方式来获取。
使用建议
是否存在参数判定
判断是否存在指定参数时,我们使用${EMPTY paramName}
或者${NOT EMPTY paramName}
来判断。