EL表达式详解(常用表达式以及取值)
EL表达式
学习总结一、 El表达式概念二、 El中的表达式1. 算术表达式2. 比较表达式3. 逻辑表达式4. 三元表达式5. 判空表达式
三、EL 从四个作用域中取值1. 概念2. pageContext 对象
总结
学习总结
一、 El表达式概念
EL表达式简介 1)Expression Language表达式语言 2)是一种在JSP页面获取数据的简单方式(只能获取数据,不能设置数据) 3) 在JSP2.0开始引入概念 4)EL表达式存取值(例子如下)
servletJSP页面request.setAttribute(“key”, value)${key}
注意:EL表达式取值时,该值存储的作用域要存在,作用域被销毁了,值也就没了
EL表达式语法 1)${ 变量名或表达式}
EL表达式作用 1)用于输出作用域中变量值 2)用于各种运算:算术、逻辑、关系、三元运算等
EL表达式与JSP脚本表达式的区别
区别JSP脚本表达式EL语法<%=m %>${m}输出哪里的值输出的是脚本变量<% int m=5; %>输出的是作用域中的值<% request.setAttribute(“m”, 5); %>
注意事项:JavaBean的属性名或map的键名中如果有特殊字符的写法
变量名[“键名”]可以使用双引号,如:${map[“no3-no4”]}
二、 El中的表达式
1. 算术表达式
算术运算符说明范例结果+加${1+1}2-减${2-1}1*乘${1*1}1/ 或 div除${5 div 2} 或 ${5 / 2}2.5% 或 mod取余${5 mod 2} 或 ${5 % 2}1输出哪里的值输出的是脚本变量<% int m=5; %>输出的是作用域中的值<% request.setAttribute(“m”, 5); %>
2. 比较表达式
关系运算符说明范例结果== 或 eq等于(equal)${1 eq 1}true!= 或 ne不等于(not equal)${1 != 1}false< 或 lt小于(Less than)${1 lt 2}true<= 或 le小于等于(Less than or equal)${1 <= 1}true> 或 gt大于(Greater than)${1 > 2}false>= 或 ge大于等于(Greater than or equal)${1 >= 1}true
3. 逻辑表达式
逻辑运算符说明范例结果&& 或 and交集(与)${true and false}false|| 或 or并集(或)${true || false}true! 或 not非${not true}false
4. 三元表达式
${ 逻辑判断 ? 真的值 : 假的值 }
5. 判空表达式
${ empty 变量名 } 变量一定要放在作用域中1)如果变量名在作用域中为空,不存在,返回 true2)如果变量名为空串,返回 true3)变量名是一个集合,如果集合中没有元素,返回 true
三、EL 从四个作用域中取值
1. 概念
EL 获取数据的方式是从4个作用域对象中,从小到大的去获取,如果需要指定作用域获取数据,可使用以下 EL 的内置对象来指定。
2. pageContext 对象
JSP本质是 Servlet,但比 Servlet 多了一个作用域:页面域,在 JSP 中有四大作用域;什么是页面域:只在一个 JSP 页面中起作用,不同的 JSP 之间不能实现数据的共享,比请求域范围还要小;页面域对象名:pageContext,是 JSP 其中一个内置对象名。
pageContext 操作有关的方法说明void setAttribute(String key, Object value)向页面域中添加键和值Object getAttribute(String key)从页面域中得到值void removeAttribute(String key)删除四个作用域中同名的键Object findAttribute(String key)自动从四个作用域中去查某个键,从小到大的范围来查找,如果找到就停止;如果没有找到,返回 null;
实例代码(当不同作用域存储键值对中的 key 相同时,使用 EL 表达式 ${key} 获取数据顺序为:从小到大(pageContext -> request -> session -> application));
// 向页面域中添加一个字符串
pageContext.setAttribute("name", "页面域");
// 请求域
request.setAttribute("name", "请求域");
// 会话域
session.setAttribute("name", "会话域");
// 上下文域
application.setAttribute("name", "上下文域");
// 自动查找作用域获取
${name}
作用域获取(当不同作用域存储键值对中的 key 相同时,想要直接获取该域对象的值可以通过 EL 表达式的方式)
<%-- EL 表达式的方式 --%>
<%-- 在作用域范围我们的名字取成一样了,怎么去找到特定的一个作用域中的值呢?? --%>
${pageScope.name}
${requstScope.name}
<%-- session比较特别,因为session是存在浏览器中的,只有关闭浏览器之后才可以拿到后面作用域中的值 --%>
${sessionScope.name}
${applicationScope.name}
注意:从下到大注释作用域设置数据代码,可看到 EL 表达式在往下获取数据
总结
以上就是对 EL 表达式取值的详细介绍了,代码仅供参考,欢迎讨论交流。