学习总结

一、 El表达式概念

  • EL表达式简介
    1)Expression Language表达式语言
    2)是一种在JSP页面获取数据的简单方式(只能获取数据,不能设置数据)
    3) 在JSP2.0开始引入概念
    4)EL表达式存取值(例子如下)
servlet JSP页面
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)如果变量名在作用域中为空,不存在,返回 true
2)如果变量名为空串,返回 true
3)变量名是一个集合,如果集合中没有元素,返回 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 表达式取值的详细介绍了,代码仅供参考,欢迎讨论交流。

最新文章

  1. Unity 官网教程 -- Multiplayer Networking
  2. SuperMap iClient 7C——网络客户端GIS开发平台 产品新特性
  3. Android 面试题汇总
  4. Swing布局基础
  5. C# jsonhelper
  6. 1、揭秘通用平台的 HttpClient (译)
  7. Struts1与Struts2的12点区别
  8. Unix网络编程--卷一:套接字联网API
  9. UVa 10817 Headmaster&#39;s Headache (状压DP+记忆化搜索)
  10. html5--indexedDB
  11. Spring事务管理使用
  12. Biztalk2010安装及配置问题集
  13. Protel对话窗字体显示不完全问题解决办法(PCB)
  14. abap 一些小知识点的总结
  15. Nginx教程(二) Nginx虚拟主机配置
  16. MySQL 的分页查询 SQL 语句
  17. WebForm(response内置函数)#转
  18. React Native多语言
  19. 【Unity Shader】一、顶点函数(vertex)和片元函数(fragment)
  20. 献给java求职路上的你们

热门文章

  1. Xmake 和 C/C++ 包管理
  2. sql server数据库如何存储数组,int[]float[]double[]数组存储到数据库方法
  3. 如何修改windows Server 2012 远程桌面连接默认端口
  4. pandas连接数据库
  5. 如何用webgl(three.js)搭建处理3D隧道、3D桥梁、3D物联网设备、3D高速公路、三维隧道桥梁设备监控-第十一课
  6. Open Babel的安装与使用
  7. Java案例之评委打分
  8. springWeb——Servlet
  9. Mybatis使用注解开发(未完)
  10. DataStage中Transformer的函数大全