EL表达式介绍(1)
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)相关推荐
- JSP第四篇【EL表达式介绍、获取各类数据、11个内置对象、执行运算、回显数据、自定义函数、fn方法库】...
什么是EL表达式? 表达式语言(Expression Language,EL),EL表达式是用"${}"括起来的脚本,用来更方便的读取对象! EL表达式主要用来读取数据,进行内容的 ...
- JSP第四篇【EL表达式介绍、获取各类数据、11个内置对象、执行运算、回显数据、自定义函数、fn方法库】(修订版)...
前言 只有光头才能变强. 文本已收录至我的GitHub仓库,欢迎Star:https://github.com/ZhongFuCheng3y/3y 什么是EL表达式? 表达式语言(Expression ...
- JSP第四篇【EL表达式介绍、获取各类数据、11个内置对象、执行运算、回显数据、自定义函数、fn方法库】
什么是EL表达式? 表达式语言(Expression Language,EL),EL表达式是用"${}"括起来的脚本,用来更方便的读取对象! EL表达式主要用来读取数据,进行内容的 ...
- JSP第四篇【EL表达式介绍、获取各类数据、11个内置对象、执行运算、回显数据、自定义函数、fn方法库】... 1
什么是EL表达式? 表达式语言(Expression Language,EL),EL表达式是用"${}"括起来的脚本,用来更方便的读取对象! EL表达式主要用来读取数据,进行内容的 ...
- Spring的EL表达式
前言 执行EL表达式 介绍 https://docs.spring.io/spring/docs/5.0.6.RELEASE/spring-framework-reference/core.html# ...
- el表达式 循环_EL表达式和JSTL标签库(百战程序员047天)
1.EL表达式 介绍:是一种非常简洁的表达式,语法简单,便于使用,灵感来源于ECMAScript和Xpath的表达式语言 样式: ${表达式} 作用:简化jsp中获取作用域或者请求数据的写法. 获取请 ...
- jsp java el表达式_jsp相关笔记,el表达式、jsp标签库(jstl)
一.jsp基础部分 1.介绍 概念 JSP(Java Server Page),java服务器端页面,可以定义html标签,又可以定义java代码. 原理 JSP本质上就是一个Servlet 2.JS ...
- EL表达式和JSTL标签库使用
EL表达式 介绍: EL(Expression Language) 目的:为了使JSP写起来更加简单. 表达式语言的灵感来自于 ECMAScript 和 XPath 表达式语言,它提供了在 JSP ...
- JavaWeb核心|EL表达式JSTLFilterListener
文章目录 一.EL 表达式 1.1 EL表达式介绍 1.2 EL表达式快速入门 1.3 EL表达式获取数据 1.4 EL表达式运算符 1.5 EL表达式使用细节 1.6 EL表达式隐式对象 二.JST ...
最新文章
- 傅里叶分析斯坦恩中文版pdf_实分析(英文版)[(美)斯坦恩(Stein,E.M.) 著] 2013年版...
- 3.5 向量化实现的解释-深度学习-Stanford吴恩达教授
- Nginx + CGI/FastCGI + C/Cpp(编不过去,不搞了。。。)(Common Gateway Interface)
- 打造0代码全自动GridView-天具神力
- 快速pow算法c语言_嵌入式必知基础算法(二)
- 如何在linux上安装sqlite数据库
- android px,dp,sp大小转换工具
- 在web开发领域,java已死是定局。
- Atitit 设计模式之道 艾提拉著 sbb 目录 1. 一、设计模式的分类	1 1.1. 总体来说设计模式分为三大类:	1 1.2. 创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建
- CCS12.0 安装并设置中文
- 人脸识别常用数据集大全
- 机器人学导论——笔记(1)
- 【Python脚本进阶】2.4、conficker蠕虫(上):Metasploit攻击Windows SMB服务
- ASPICE过程开发
- Byval 和 Byref的区别
- Uber是什么 读书笔记
- 设计模式--reactor 模式
- 魔兽世界私服 服务器系统要求,全球最大《魔兽世界》私服有望重启 暴雪亲自运营...
- js 数组的every() 方法
- Endnote中文参考文献格式下载地址(官网)