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() + "");
【参考文章】