1. 产生背景:

在MVC体系结构中,JSP页面只是用来显示数据,但JSP脚本中的表达式功能不够强大,它不能直接对隐式对象中某对象的属性进行显示,需要配合 scriptlet才能显示数据,很是麻烦,如果在JSP页面中使用EL表达式将大大简化JSP页面中的Java代码,再配合JSP标准库(JSTL), 可达到真正的JSP无脚本。

2. EL简介:

EL(Expression Language)表达式语言,语法:${表达式},例如:${"Beijing 2008"}则在JSP页面输出Beijing 2008,相当于JSP脚本中的<%="Beijing 2008"%>,在EL表达式中的单引号和双引号功能是一样的,表示一个字符串。再如:${sessionScope.user.sex},述EL 范例的意思是:从Session的范围中,取得用户的性别。假若依照之前JSP scriptlet的写法如下:

User user = (User)session.getAttribute("user");
String sex = user.getSex();

两者相比较之下,可以发现EL 的语法比传统JSP Scriptlet 更为方便、简洁。

3. EL的使用:

在JSP页面中我们可以禁用EL表达式,需要配置page指令的isELIgnored属性,属性值若为true则支持EL表达式,若为false则禁用表达式,默认情况下是支持EL表达式的。

4. 算术运算符+:

在EL表达式中的'+'只有数学运算的功能,没有连接符的功能,它会试着把运算符两边的操作数转换为数值类型,进而进行数学加法运算,最后把结果输出。若出现${'a'+'b'}则会出现异常。例如:${6+6}

5. .与[ ]运算符:

EL提供.和[ ]两种运算符来导航数据。下列两者所代表的意思是一样的:

${sessionScope.user.sex}等于${sessionScope.user["sex"]}

.和[ ]也可以同时混合使用,例如:

${sessionScope.shoppingCart[0].price}

显示结果为shoppingCart中第一项物品的价格。
不过,以下两种情况,两者会有差异:
(1) 当要存取的属性名称中包含一些特殊字符,如.或–等并非字母或数字的符号,就一定要使用[ ],例如:${user.My-Name },上述是不正确的方式,应当改为:${user["My-Name"] }
(2) 我们来考虑下列情况:

${sessionScope.user[data]}

此时,data 是一个变量,假若data的值为"sex"时,那上述的例子等于${sessionScope.user.sex};假若data 的值为"name"时,它就等于${sessionScope.user.name}。因此,如果要动态取值时,就可以用上述的方法来做,但.无法做到动 态取值。

6. EL获取变量:

EL存取变量数据的方法很简单,例如:${username}。它的意思是取出某一范围中名称为username的变量。因为我们并没有指定哪一个范围的 username,所以它的默认值会先从Page 范围找,假如找不到,再依序到Request、Session、Application范围。假如途中找到username,就直接回传,不再继续找下 去,但是假如全部的范围都没有找到时,就回传null,当然EL表达式还会做出优化,页面上显示空白,而不是打印输出NULL。

属性范围(jstl名称) EL中的名称
Page PageScope
Request RequestScope
Session SessionScope
Application ApplicationScope

我们也可以指定要取出哪一个范围的变量:

范例 说明
${pageScope.username} 取出Page范围的username变量
${requestScope.username} 取出Request范围的username变量
${sessionScope.username} 取出Session范围的username变量
${applicationScope.username} 取出Application范围的username变量

其中,pageScope、requestScope、sessionScope和applicationScope都是EL的隐含对象,由它们的名称可 以很容易猜出它们所代表的意思,例如:${sessionScope.username}是取出Session范围的username 变量。这种写法是比之前JSP的写法:
String username = (String) session.getAttribute("username");容易、简洁许多。

EL表达式介绍(1)相关推荐

  1. JSP第四篇【EL表达式介绍、获取各类数据、11个内置对象、执行运算、回显数据、自定义函数、fn方法库】...

    什么是EL表达式? 表达式语言(Expression Language,EL),EL表达式是用"${}"括起来的脚本,用来更方便的读取对象! EL表达式主要用来读取数据,进行内容的 ...

  2. JSP第四篇【EL表达式介绍、获取各类数据、11个内置对象、执行运算、回显数据、自定义函数、fn方法库】(修订版)...

    前言 只有光头才能变强. 文本已收录至我的GitHub仓库,欢迎Star:https://github.com/ZhongFuCheng3y/3y 什么是EL表达式? 表达式语言(Expression ...

  3. JSP第四篇【EL表达式介绍、获取各类数据、11个内置对象、执行运算、回显数据、自定义函数、fn方法库】

    什么是EL表达式? 表达式语言(Expression Language,EL),EL表达式是用"${}"括起来的脚本,用来更方便的读取对象! EL表达式主要用来读取数据,进行内容的 ...

  4. JSP第四篇【EL表达式介绍、获取各类数据、11个内置对象、执行运算、回显数据、自定义函数、fn方法库】... 1

    什么是EL表达式? 表达式语言(Expression Language,EL),EL表达式是用"${}"括起来的脚本,用来更方便的读取对象! EL表达式主要用来读取数据,进行内容的 ...

  5. Spring的EL表达式

    前言 执行EL表达式 介绍 https://docs.spring.io/spring/docs/5.0.6.RELEASE/spring-framework-reference/core.html# ...

  6. el表达式 循环_EL表达式和JSTL标签库(百战程序员047天)

    1.EL表达式 介绍:是一种非常简洁的表达式,语法简单,便于使用,灵感来源于ECMAScript和Xpath的表达式语言 样式: ${表达式} 作用:简化jsp中获取作用域或者请求数据的写法. 获取请 ...

  7. jsp java el表达式_jsp相关笔记,el表达式、jsp标签库(jstl)

    一.jsp基础部分 1.介绍 概念 JSP(Java Server Page),java服务器端页面,可以定义html标签,又可以定义java代码. 原理 JSP本质上就是一个Servlet 2.JS ...

  8. EL表达式和JSTL标签库使用

    EL表达式 介绍: EL(Expression Language)  目的:为了使JSP写起来更加简单. 表达式语言的灵感来自于 ECMAScript 和 XPath 表达式语言,它提供了在 JSP ...

  9. JavaWeb核心|EL表达式JSTLFilterListener

    文章目录 一.EL 表达式 1.1 EL表达式介绍 1.2 EL表达式快速入门 1.3 EL表达式获取数据 1.4 EL表达式运算符 1.5 EL表达式使用细节 1.6 EL表达式隐式对象 二.JST ...

最新文章

  1. 傅里叶分析斯坦恩中文版pdf_实分析(英文版)[(美)斯坦恩(Stein,E.M.) 著] 2013年版...
  2. 3.5 向量化实现的解释-深度学习-Stanford吴恩达教授
  3. Nginx + CGI/FastCGI + C/Cpp(编不过去,不搞了。。。)(Common Gateway Interface)
  4. 打造0代码全自动GridView-天具神力
  5. 快速pow算法c语言_嵌入式必知基础算法(二)
  6. 如何在linux上安装sqlite数据库
  7. android px,dp,sp大小转换工具
  8. 在web开发领域,java已死是定局。
  9. Atitit 设计模式之道 艾提拉著 sbb 目录 1. 一、设计模式的分类 1 1.1. 总体来说设计模式分为三大类: 1 1.2. 创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建
  10. CCS12.0 安装并设置中文
  11. 人脸识别常用数据集大全
  12. 机器人学导论——笔记(1)
  13. 【Python脚本进阶】2.4、conficker蠕虫(上):Metasploit攻击Windows SMB服务
  14. ASPICE过程开发
  15. Byval 和 Byref的区别
  16. Uber是什么 读书笔记
  17. 设计模式--reactor 模式
  18. 魔兽世界私服 服务器系统要求,全球最大《魔兽世界》私服有望重启 暴雪亲自运营...
  19. js 数组的every() 方法
  20. Endnote中文参考文献格式下载地址(官网)

热门文章

  1. window 删除顽固 node_modules
  2. 创建数据库时指定编码方式
  3. 《Oracle从入门到精通》读书笔记第八章 管理表空间和数据文件之二
  4. Oracle中Scott账户常见表的样本查询编程与数据库
  5. ubuntu9.10安装文泉驿微米黑字体
  6. 重要的mysql语句用法
  7. ASP.NET网络编程中常用到的27个函数集
  8. 实践基于REST风格的Webservice(PHP,C#)
  9. dom4j 使用总结
  10. Postgresql服务器配置-设置参数