EL表达式
# EL表达式简介
EL是JSP 2.0增加的技术规范,其全称是表达式语言(Expression Language)。EL语言的灵感来自于ECMAScript (opens new window) 和 XPath (opens new window)表达式语言。
EL表达式语言是一种简单的语言,提供了在JSP中简化表达式的方法,目的是为了尽量 减少JSP页面中的Java代码,使得JSP页面的处理程序编写起来更加简洁,便于开发和维护。
# EL语法
JSP默认支持EL表达式,在JSP中访问模型对象是通过EL表达式的语法来表达。
所有EL表达式的格式都是以${}
表示。例如,${ userinfo}
代表获取变量userinfo的值。当EL表达式的变量不给定范围时,则默认在page范围查找,然后依次在request、session、application范围查找。
也可以用范围作为前缀表示属于哪个范围的变量,例如:${ pageScope. userinfo}
表示访问page范围的userinfo变量。
作用:替换和简化jsp页面中java代码的编写
语法:${表达式}
忽略页面中所有的EL表达式 <%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="true"%>
忽略当前EL表达式
- 转义字符
\${3 > 4}
# EL表达式使用
# 运算
EL运算符
操作符 | 描述 |
---|---|
. | 访问一个Bean属性或者一个映射条目 |
[ ] | 访问一个数组或者链表的元素 |
( ) | 组织一个子表达式以改变优先级 |
+ | 加 |
- | 减或负 |
* | 乘 |
/ or div | 除 |
% or mod | 取模 |
== or eq | 测试是否相等 |
!= or ne | 测试是否不等 |
< or lt | 测试是否小于 |
> or gt | 测试是否大于 |
<= or le | 测试是否小于等于 |
>= or ge | 测试是否大于等于 |
&& or and | 测试逻辑与 |
|| or or | 测试逻辑或 |
! or not | 测试取反 |
empty | 空运算符 |
empty:用于判断字符串、集合、数组对象是否为null,并且长度是否为0
${empty list}
:域中list键对应的值是否为空,长度是否为0${not empty str}
:判断字符串、集合、数组对象是否不为null并且长度>0
# 获取值
EL表达式只能从域对象中获取值 语法
1. ${域名称键名}
:从指定域中获取指定键的值
域名称
pageScope | pageContext |
---|---|
requestScope | request |
sessionScope | session |
applicationScope | application(ServletContext) |
举例:在 request域中存储了 name=Mr.Q
获取:${ requestscope.name}
2. ${键名}
表示依次从最小的域中查找是否有该键对应的值,直到找到为止 ${name}
依次从上面四个域中寻找名为name的键(域的范围从小到大)
3. 获取对象、List集合、Map集合的值
- 对象:
${域名称.键名.属性名}
- 本质上会去调用对的 getter方法
- List集合:
${域名称.键名[索引]}
- Map集合:
${域名称.键名.key名称}
${域名称.键名["key名称"]}
动态获取虚拟目录
${pageContext.request}
${pageContext.request.contextPath}
等价于response.sendRedirect(request.getContextPath() + "");
【参考文章】