Home 世界杯网 EL表达式详解(常用表达式以及取值)

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 表达式取值的详细介绍了,代码仅供参考,欢迎讨论交流。