360百科:EL(Expression Language) 是为了使JSP写起来更加简单,表达式语言的灵感来自于 ECMAScript 和 XPath 表达式语言。
EL 提供了在 JSP 中简化表达式的方法,让 Jsp 的代码更加简化。
先分享一波福利(EL 表达式的 pdf 版文档,很详细)
链接:https://pan.baidu.com/s/1_nRIF7KCtPt6_ultbIgnPQ
提取码:tdfr
一、EL语法
所有 EL 表达式都是以 ${ 开始 ,以 } 结尾。
举个栗子:
EL 表达式:${sessionScope.user.sex} 等于
Java 代码: Object user = request.getAttribute("user");
String sex = user.getSex();
二、EL 表达式内置对象
所谓内置对象就是 EL 语言自己本身就支持的,下表列出了 EL 表达式中的各种内置对象
表达式内置对象 | 说明 | |
1 | pageContext | 表示 javax.servlet.jsp.PageContext 对象 |
2 | pageScope | 表示从 page 属性范围内查找输出属性 |
3 | requestScope | 表示从 request 属性范围内查找输出属性 |
4 | sessionScope | 表示从 session 属性范围内查找输出属性 |
5 | applicationScope | 表示从 application 属性范围内查找输出属性 |
6 | param | 接收传递到本页面的参数(如 get 请求带的参数) |
7 | paramValues | 接收传递到本页面的一组参数(如 get 请求带的一组参数) |
8 | header | 取得一个头信息数据(请求头信息)(了解即可,不常用) |
9 | hearerValues | 取得一组头信息数据(请求头信息)(了解即可,不常用) |
10 | cookie | 取出 Cookie 中的数据(了解即可,不常用) |
11 | initParam | 取得配置的初始化参数(了解即可,不常用) |
pageContext 使用举例(读取一个请求的 SESSIONID):sessionId: ${pageContext.session.id }
与范围有关的四个隐藏对象,从小到大顺序(pageScope,requestScope,sessionScope,applicationScope)
以上四个统一举例:age: ${customer.age }
页面会先从 page 中找 ${pageScope.customer.age } ,
找不到去 request 找 ${requestScope.customer.age } ,
还找不到去 session 找 ${sessionScope.customer.age },
最后去application 找 ${applicationScope.customer.age }。
param 使用举例:地址信息 http://localhost:8080/ELProject/el2.jsp?score=89&name=A&name=B&name=C
score: ${param.score } 通过 param 便可获取 链接中 score 的值;
同理 names: ${paramValues.name } 通过 paramValues 便可获取 链接中 name 的地址(以数组形式返回);
EL 表达式可自动转换类型:score: ${param.score + 11 } 结果为 100.
三、EL 算术运算符
算术运算符 | 说明 | 范 例 | 结 果 |
+ | 加 | ${ 17 + 5 } | 22 |
- | 减 | ${ 17 - 5 } | 12 |
* | 乘 | ${ 17 * 5 } | 85 |
/ 或 div | 除 | ${ 17 / 5 } 或 ${ 17 div 5 } | 3 |
% 或 mod | 取余 | ${ 17 % 5 } 或 ${ 17 mod 5 } | 2 |
四、EL 关系运算符
注意:在使用 EL 关系运算符时,不能够写成:
${ param.password1 } = = ${ param.password2 } 或 ${ ${ param.password1 } = = ${ param.password2 } }
而应该写成:
${ param.password1 = = param.password2 }
五、EL 逻辑运算符
六、其他运算符
(1)Empty 运算符:
empty 可以作用于一个集合, 若该集合不存在或集合中没有元素, 其结果都为 true
例子:names is empty: ${empty requestScope.names }
(2)条件运算符:${ A ? B :C }
当 A 为 true 时,执行 B;当 A 为 false 时,执行 C。
(3)()括号运算符:改变运算优先权。
以上阐述了 EL 语法的使用和规则
科技改变世界,技术连接你我,
如有瑕疵,请批评指正。