• 前言

很久之前,也许你在JSP代码中会遇到类似${person.name}${person['name']}这样的代码,这样的代码被称之为EL表达式,看起来像不像现在普遍使用的模板引擎thymeleaf里的用法? 早期当Java WEB开发还处在JSP的时代,由于EL表达式的高效性,大家都习惯JSP配合EL表达式快速读取后台返回的数据,可后来因模板引擎的兴起,而Springboot又极力推崇thymeleaf等原因,编程人员都选择了新技术模板引擎来主导项目,导致EL表达式渐渐淡出了大家的视线,乃至于偶尔遇到spring项目时,时常会和thymeleaf模板引擎里的写法搞混,今天给大家说道说道资格EL表达式的前世今生。

- EL表达式

EL是JSP 2.0增加的技术规范,其全称是表达式语言(Expression Language),是从 JavaScript 脚本语言得到启发的一种表达式语言,它借鉴了 JavaScript 多类型转换无关性的特点,意在简化jsp页面中java代码的编写。在使用 EL 从 scope 中得到参数时可以自动转换类型,因此对于类型的限制更加宽松。

EL的作用域范围从小到大依次包含page,request,session,application。

当EL表达式中的变量不给定范围时,则默认在page范围查找,然后依次在request、session、application范围查找。也可以用范围作为前缀表示属于哪个范围的变量,例如:${pageScope. userinfo}表示访问page范围中的userinfo变量。

在读取数据时,若EL找不到键值对应的属性值,不会显示null,会显示空字符串。

- 读取数据

EL 提供“.“和“[]“两种运算符来读取数据,此外“[]“可以读取动态属性名的值以及包含特殊字符的属性名的值。
通过 域 名 称 . 键 名 [ 索 引 ] 读 取 l i s t 数 据 ; 通 过 {域名称.键名[索引]}读取list数据;通过 域名称.键名[索引]读取list数据;通过{域名称.键名.key}读取map数据。
困惑
了解完了EL表达式后,回过头说说,为什么会纠结EL表达式?

那是因为现在做Springboot开发结合thymeleaf模板引擎使用时,有时想读取后台的数据看看,习惯性思维用JSP那一套${xxx}来输出内容,可偏偏thymeleaf的使用和JSP有点类似, 但是thymeleaf是使用的html静态网页,这个时候你是得不到任何输出的,你必须使用thymeleaf的标签才能输出,类似<p th:text="Hello, ${name}" >message</p>,是不是有点懵圈。这里抓住一个重点就行EL是JSP的产物,和html没有关系的。用了模板引擎就老老实实使用标签吧,不要想着老一套了。

总结

  1. EL表达式只和JSP挂钩,在html中是无法使用的。
  2. 要么使用EL + JSP,要么使用thymeleaf + html,两种模式不要混用,鱼和熊掌不可兼得。
  3. 关于EL表达式和thymeleaf的内容繁多,你又有事情可做了。
  4. 文章中描述的知识点,只是相对的准确, 不要拿来当教条,更多的知识点请执行学习补充。

EL表达式和thymeleaf相关推荐

  1. 【SpringBoot】【Thyemeleaf 】【Spring EL表达式】 SPEL调用静态类、静态方法

    前言 spring 5.0.6.RELEASE Thyemeleaf 3.0 SpringBoot 2.3.4.RELEASE Spring EL表达式 调用静态类.静态方法 参考这里:https:/ ...

  2. js去el的map_转:el表达式获取map对象的内容 js中使用el表达式 js 中使用jstl 实现 session.removeattribute...

    原文链接: 总结: el表达式获取map对象的内容 后端: HashMap map1 = new HashMap(); map1.put("key1","lzsb&quo ...

  3. JSP中是EL表达式与JSTL

    EL语法:${ } EL取值来自于作用域对象 1.如何从指定作用域取值(默认从最小作用域取值) pageScope.requestScope.sessionScope.applicationScope ...

  4. JSP中的EL表达式详细介绍

    2019独角兽企业重金招聘Python工程师标准>>> 一.JSP EL语言定义 EL 提供了在 JSP 脚本编制元素范围外使用运行时表达式的功能.脚本编制元素是指页面中能够用于在 ...

  5. JSTL+EL表达式方法获取Oracle的Clob字段内容

    我们在页面获得数据的时候一般的类型还是很好获得的,但是一遇到Clob类型就比较麻烦,最常用的方法是用一个流将其读取出来.使用MVC框架的时候这些都是无所谓的事情,因为反正是写在java类中怎么写都行, ...

  6. JSP中EL表达式失效的问题

    今天在jsp中使用el表达式,发现失效了,仔细检查发现bean并无问题.最后知道,jsp默认不使用el表达式,在头部标签添加设置isELIgnored为false即可 . <%--isELIgn ...

  7. el表达式 java_java基础学习:JavaWeb之EL表达式

    其他更多java基础文章: java基础学习(目录) 一.EL表达式 EL 全名为Expression Language.JSP中可以使用EL表达式,EL表达式是用"${}"括起来 ...

  8. Jsp内置对象及EL表达式的使用

    一.JSP的内置对象(9个JSP内置对象) JSP的内置对象引用名称 对应的类型 request HttpServletRequest response HttpServletResponse ses ...

  9. EL表达式介绍(1)

    1. 产生背景: 在MVC体系结构中,JSP页面只是用来显示数据,但JSP脚本中的表达式功能不够强大,它不能直接对隐式对象中某对象的属性进行显示,需要配合 scriptlet才能显示数据,很是麻烦,如 ...

最新文章

  1. 一文看懂Python多进程与多线程编程(工作学习面试必读)
  2. linux下安装 QQ(wine qq 2013-2014)
  3. 坑 之 Tensorflow安装在导入模块时会出现ImportError: DLL load failed: 找不到指定的模块的问题
  4. 阳泉2021高考成绩查询时间段,2021年阳泉高考成绩排名及成绩公布时间什么时候出来...
  5. linux命令行的操作符,如何在Linux命令行中进行基本的数学运算
  6. (转)淘淘商城系列——SSM框架整合之逆向工程
  7. 【SSH进阶】No result defined for action **的解决方案
  8. java 符号引用与直接引用
  9. redis 计数器 java_Redis介绍
  10. 安卓日记本设计内容介绍_天一 | 教你捷径,使用VB开发安卓程序!
  11. too many files open
  12. 2021/9/7 ad9361 SPI 通信与数据接口
  13. java程序员必须安装的软件
  14. echarts实现半圆饼图
  15. 对央行数字货币系统的理解
  16. 红色警戒2:尤里的复仇 中文绿色版
  17. 10月 区块链领域投融资事件
  18. 分布式资源管理与任务调度框架Yarn
  19. JavaScript对象与内置对象——内置对象(二)
  20. 往事不回头,今后不将就~~Fighting

热门文章

  1. java中集合对象与string互转的几种方式
  2. 前端常见算法(js)
  3. mysql 设置 file_prev_MYSQL 调优学习笔记
  4. 【Linux】Linux命令:lvcreate巧用
  5. Photo Album: Dogs of Longwang Hill
  6. 王珊,萨师煊.数据库系统概论(第5版) 第三章.关系数据库标准语言SQL课后习题及总结
  7. fw:迪拜:阿拉伯的奇迹
  8. 巨头间的战争,我眼中的的“淘宝为什么屏蔽百度抓取”
  9. 仿迅雷播放器教程 -- 基于VLC的C++播放器 (4)
  10. Source Insight基本使用和快捷键