- 浏览: 2261925 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (423)
- FileNet相关 (3)
- 应用服务器相关 (22)
- Java综合 (77)
- 持久层 (24)
- struts (11)
- webservice (8)
- 虚拟机 (2)
- 光盘刻录 (0)
- AD及AD集群 (1)
- JS (33)
- F5 (0)
- loadrunner8.1 (0)
- Java 反编译工具 (2)
- DataBase (62)
- ant (1)
- 操作系统 (29)
- 我的任务 (3)
- 平台架构 (16)
- 业务规则引擎 (2)
- 模板 (1)
- EJB (5)
- spring (24)
- CMMI (1)
- 项目管理 (20)
- LDAP (13)
- JMS (10)
- JSP (19)
- JBPM (2)
- web MVC框架设计思想 (2)
- 第三方支付平台 (2)
- BUG管理工具 (1)
- 垃圾站 (2)
- php (1)
- swing (1)
- 书籍 (1)
- QQ qq (2)
- 移动互联网 (26)
- 爱听的歌曲 (0)
- hadoop (4)
- 数据库 (9)
- 设计模式 (1)
- 面试经验只谈 (1)
- 大数据 (9)
- sp (1)
- 缓存数据库 (8)
- storm (2)
- taobao (2)
- 分布式,高并发,大型互联网,负载均衡 (6)
- Apache Ignite (0)
- Docker & K8S (0)
最新评论
-
wangyudong:
新版本 Wisdom RESTClienthttps://gi ...
spring rest mvc使用RestTemplate调用 -
wangyudong:
很多API doc生成工具生成API文档需要引入第三方依赖,重 ...
spring rest mvc使用RestTemplate调用 -
zhaoshijie:
cfying 写道大侠,还是加载了两次,怎么解决啊?求。QQ: ...
spring容器加载完毕做一件事情(利用ContextRefreshedEvent事件) -
xinglianxlxl:
对我有用,非常感谢
spring容器加载完毕做一件事情(利用ContextRefreshedEvent事件) -
k_caesar:
多谢,学习了
利用maven的resources、filter和profile实现不同环境使用不同配置文件
El表达式经典
<html><body>
Dog’s name is:${person.dog.name}
</body></html>
就这么简单!我们甚至没有声明person是什么意思……它自己已经知道。
用这个代码:${person.dog.name}
替代以下代码:
<%= ((foo.person) request.getAttribute(“person”)).getDog().getName() %>
JSP表达式(EL)解析
表达式语言的语法相当简单,变化也不太大。难的是,有些EL看上去很像Java,但表现却不同。所以你可能会发现,有些在Java中能用的倒了EL中却不行,反之亦然。所以不要想着把Java语言/语法规则硬往EL上套,明确这一点就行了。可以把EL想成是不使用Java来访问Java对象的一种方法。
EL表达式总是放在大括号里,而且前面有一个美元符前缀
${person.name}
表达式中第一个命名变量可以是一个隐式对象,也可以是一个属性。
${firstThing.secondThing}
如果EL表达式中第一项是一个属性,可以是存储在任意一个可用作用域中的属性。
EL隐式对象 或 属性
pageScope
requestScope
sessionScope
applicationScope
param
所有这些都是映射对象
paramValues
header
headerValues
cookie
initParam
注意:EL隐式对象与JSP脚本中可用的隐式对象不同,只有pageContext除外
pageContext
页面作用域中的属性
请求作用域中的属性
会话作用域中的属性
应用作用域中的属性
在所有隐式对象中,只有pageContext不是映射。这是pageContext对象的实际引用!(pageContext是一个Java Bean)
使用点号(.)操作符访问性质和映射值
第一个变量可以是一个隐式对象,也可以是一个属性,点号右边可以是一个映射键(如果第一个变量)是映射,也可以是一个bean性质(如果第一个变量是Java Bean属性)。
1. 如果表达式中变量后面有一个点号,左边的变量必须是一个映射或一个bean。
点号左边的的变量要么是一个Map(有键),要么是一个bean(有性质)。不论变量是一个隐式对象还是一个属性,都是如此。
pageContext隐式对象是一个bean,它有获取方法,所有其他隐式对象都是Map。
${person.name}
bean
java.util.map
2. 点号右边必须是一个映射键或一个bean性质。
${person.name}
getName()
setName()
java.util.map(“name” , “Evan”)
3. 点号右边必须遵循Java有关标识符的命名规则。
? 必须以字母,_或$开头。
? 第一个字母后面可以有数字。
? 不能是Java关键字。
[ ]就像是更好的点号
只有当点号右边是左边的一个bean性质或映射键时,点号操作符才能工作。仅此而已,但[]操作符就强大多了,而且更加灵活……
以下代码:
${person[“name”]}
与下面的代码等价:
${person.name}
简单的点号操作符之所以能工作,是因为person是一个bean,而且name是person的一个性质。
但如果person是一个数组呢?或者如果person是一个List呢?再或者,name不遵循正常的Java命名规则怎么办?
[ ]让你有更多选择……
使用点号操作符时,左边只能是一个Map或一个bean,右边必须遵循 Java关于标识符的命名规则。但是使用[]时,左边可以是一个List或数组(可以是任何类型的数组)。这也说明,右边可以是一个数,或者可以解析为一个数,也可以是不遵循Java命名规则的标识符。例如,Map键可以是一个包含点号的String(“com.foo.trouble”)。
1. 如果表达式中变量后有一个中括号[],左边的变量则有更多选择,可以是Map、bean、List或数组。
${musicList[“something”]}
数组
java.util.Map
bean
java.util.List
2. 如果中括号里有一个String直接量(即用引号引起的串),这可以是一个Map键,或是一个bean性质,还可以是List或数组中的索引。
${musicList[“something”]}
数组
1:“Zero 7”,2:”BT”
java.util.Map
(“surf”,”tahirt 80”)
getSongList()
setSongList()
java.util.List
(1:“Zero 7”,2:”BT”)
数组和List中的String索引会强制转换为int
访问数组的EL与访问List的EL是一样的。
大家要记住,这不是Java。在EL中,[]操作符并不是数组的访问操作符。不是这样的,它只是叫做[]操作符。如果实在要给它一个名字,就应该是“数组/List/Map/bean性质访问操作符
如果中括号左边是一个数组或List,而且索引是一个String直接量,那么这个索引会强制转换为int。
下面这样不行:
${favoriteFood[“one”]}
因为”one”不能转换为一个int。如果索引无法强制转换,你就会得到一个错误。
如果不是String直接量,就会计算
如果中括号里没有引号,容器就会计算中括号中的内容,搜索与该名字绑定的属性,并替换为这个属性的值(如果有一个同名的隐式对象,则始终使用隐式对象)。
Music is: ${musicMap[Ambient]}
查找一个名为“Ambient”的属性。
使用这个属性的值作为Map的键,或者返回null。
Servlet中:
java.util.Map muicMap = new java.util.HashMap();
muicMap.put(“Ambient”,”Zero 7”);
muicMap.put(“Surf”,”Tahiti 80”);
muicMap.put(“DJ”,”BT”);
muicMap.put(“Indie”,”Frou Frou”);
request.setAttribute(“musicMap”,musicMap);
request.setAttribute(“Genre”,” Ambient”);
在JSP中这是可以的:
Music is: ${musicMap[Genre]} 计算为 Music is: ${musicMap[” Ambient”]}
由于有一个名为” Genre”的请求属性,它的值为” Ambient”,而且” Ambient”是musicMap的一个键。
在JSP中,下面这样是不行的:
Music is: ${musicMap[“Genre”]} 不变 Music is: ${musicMap[“Genre”]]}
因为musicMap中没有名为“Genre”的键。由于加了引号,容器不会进行计算,而只认为只是一个直接量键名。
在中括号里可以使用嵌套表达式
El中都是表达式。可以任意做嵌套表达式,深度不限。换句话说,可以把一个复杂的表达式放在另一个表达式中,而后者可以再放在一个表达式中……(如此继续)。表达式会从最内层中括号开始计算。
这一部分对你来说相当直观,因为这与小括号里嵌套Java代码没有什么不同。麻烦的是,要当心加不加引号。
Servlet中:
java.util.Map muicMap = new java.util.HashMap();
muicMap.put(“Ambient”,”Zero 7”);
muicMap.put(“Surf”,”Tahiti 80”);
muicMap.put(“DJ”,”BT”);
muicMap.put(“Indie”,”Frou Frou”);
request.setAttribute(“musicMap”,musicMap);
String[] musicTypes = {“Ambient”,” Surf”,” DJ”,” Indie”};
request.setAttribute(“MusicType”,musicTypes);
JSP中这样是可以的:
Music is ${musicMap[MusicType[0]]}
变成:Music is ${ musicMap [“Ambient”]}
变成:Music is Zero 7
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/welcomejzh/archive/2007/12/22/1958784.aspx
<html><body>
Dog’s name is:${person.dog.name}
</body></html>
就这么简单!我们甚至没有声明person是什么意思……它自己已经知道。
用这个代码:${person.dog.name}
替代以下代码:
<%= ((foo.person) request.getAttribute(“person”)).getDog().getName() %>
JSP表达式(EL)解析
表达式语言的语法相当简单,变化也不太大。难的是,有些EL看上去很像Java,但表现却不同。所以你可能会发现,有些在Java中能用的倒了EL中却不行,反之亦然。所以不要想着把Java语言/语法规则硬往EL上套,明确这一点就行了。可以把EL想成是不使用Java来访问Java对象的一种方法。
EL表达式总是放在大括号里,而且前面有一个美元符前缀
${person.name}
表达式中第一个命名变量可以是一个隐式对象,也可以是一个属性。
${firstThing.secondThing}
如果EL表达式中第一项是一个属性,可以是存储在任意一个可用作用域中的属性。
EL隐式对象 或 属性
pageScope
requestScope
sessionScope
applicationScope
param
所有这些都是映射对象
paramValues
header
headerValues
cookie
initParam
注意:EL隐式对象与JSP脚本中可用的隐式对象不同,只有pageContext除外
pageContext
页面作用域中的属性
请求作用域中的属性
会话作用域中的属性
应用作用域中的属性
在所有隐式对象中,只有pageContext不是映射。这是pageContext对象的实际引用!(pageContext是一个Java Bean)
使用点号(.)操作符访问性质和映射值
第一个变量可以是一个隐式对象,也可以是一个属性,点号右边可以是一个映射键(如果第一个变量)是映射,也可以是一个bean性质(如果第一个变量是Java Bean属性)。
1. 如果表达式中变量后面有一个点号,左边的变量必须是一个映射或一个bean。
点号左边的的变量要么是一个Map(有键),要么是一个bean(有性质)。不论变量是一个隐式对象还是一个属性,都是如此。
pageContext隐式对象是一个bean,它有获取方法,所有其他隐式对象都是Map。
${person.name}
bean
java.util.map
2. 点号右边必须是一个映射键或一个bean性质。
${person.name}
getName()
setName()
java.util.map(“name” , “Evan”)
3. 点号右边必须遵循Java有关标识符的命名规则。
? 必须以字母,_或$开头。
? 第一个字母后面可以有数字。
? 不能是Java关键字。
[ ]就像是更好的点号
只有当点号右边是左边的一个bean性质或映射键时,点号操作符才能工作。仅此而已,但[]操作符就强大多了,而且更加灵活……
以下代码:
${person[“name”]}
与下面的代码等价:
${person.name}
简单的点号操作符之所以能工作,是因为person是一个bean,而且name是person的一个性质。
但如果person是一个数组呢?或者如果person是一个List呢?再或者,name不遵循正常的Java命名规则怎么办?
[ ]让你有更多选择……
使用点号操作符时,左边只能是一个Map或一个bean,右边必须遵循 Java关于标识符的命名规则。但是使用[]时,左边可以是一个List或数组(可以是任何类型的数组)。这也说明,右边可以是一个数,或者可以解析为一个数,也可以是不遵循Java命名规则的标识符。例如,Map键可以是一个包含点号的String(“com.foo.trouble”)。
1. 如果表达式中变量后有一个中括号[],左边的变量则有更多选择,可以是Map、bean、List或数组。
${musicList[“something”]}
数组
java.util.Map
bean
java.util.List
2. 如果中括号里有一个String直接量(即用引号引起的串),这可以是一个Map键,或是一个bean性质,还可以是List或数组中的索引。
${musicList[“something”]}
数组
1:“Zero 7”,2:”BT”
java.util.Map
(“surf”,”tahirt 80”)
getSongList()
setSongList()
java.util.List
(1:“Zero 7”,2:”BT”)
数组和List中的String索引会强制转换为int
访问数组的EL与访问List的EL是一样的。
大家要记住,这不是Java。在EL中,[]操作符并不是数组的访问操作符。不是这样的,它只是叫做[]操作符。如果实在要给它一个名字,就应该是“数组/List/Map/bean性质访问操作符
如果中括号左边是一个数组或List,而且索引是一个String直接量,那么这个索引会强制转换为int。
下面这样不行:
${favoriteFood[“one”]}
因为”one”不能转换为一个int。如果索引无法强制转换,你就会得到一个错误。
如果不是String直接量,就会计算
如果中括号里没有引号,容器就会计算中括号中的内容,搜索与该名字绑定的属性,并替换为这个属性的值(如果有一个同名的隐式对象,则始终使用隐式对象)。
Music is: ${musicMap[Ambient]}
查找一个名为“Ambient”的属性。
使用这个属性的值作为Map的键,或者返回null。
Servlet中:
java.util.Map muicMap = new java.util.HashMap();
muicMap.put(“Ambient”,”Zero 7”);
muicMap.put(“Surf”,”Tahiti 80”);
muicMap.put(“DJ”,”BT”);
muicMap.put(“Indie”,”Frou Frou”);
request.setAttribute(“musicMap”,musicMap);
request.setAttribute(“Genre”,” Ambient”);
在JSP中这是可以的:
Music is: ${musicMap[Genre]} 计算为 Music is: ${musicMap[” Ambient”]}
由于有一个名为” Genre”的请求属性,它的值为” Ambient”,而且” Ambient”是musicMap的一个键。
在JSP中,下面这样是不行的:
Music is: ${musicMap[“Genre”]} 不变 Music is: ${musicMap[“Genre”]]}
因为musicMap中没有名为“Genre”的键。由于加了引号,容器不会进行计算,而只认为只是一个直接量键名。
在中括号里可以使用嵌套表达式
El中都是表达式。可以任意做嵌套表达式,深度不限。换句话说,可以把一个复杂的表达式放在另一个表达式中,而后者可以再放在一个表达式中……(如此继续)。表达式会从最内层中括号开始计算。
这一部分对你来说相当直观,因为这与小括号里嵌套Java代码没有什么不同。麻烦的是,要当心加不加引号。
Servlet中:
java.util.Map muicMap = new java.util.HashMap();
muicMap.put(“Ambient”,”Zero 7”);
muicMap.put(“Surf”,”Tahiti 80”);
muicMap.put(“DJ”,”BT”);
muicMap.put(“Indie”,”Frou Frou”);
request.setAttribute(“musicMap”,musicMap);
String[] musicTypes = {“Ambient”,” Surf”,” DJ”,” Indie”};
request.setAttribute(“MusicType”,musicTypes);
JSP中这样是可以的:
Music is ${musicMap[MusicType[0]]}
变成:Music is ${ musicMap [“Ambient”]}
变成:Music is Zero 7
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/welcomejzh/archive/2007/12/22/1958784.aspx
发表评论
-
各大巨头电商提供的IP库API接口-新浪、搜狐、阿里...
2015-04-22 13:18 15910关键字:各大巨头电商提供的IP库API接口-新浪、搜狐、阿里. ... -
用Java来获取访问者真实的IP地址-超准确
2015-04-22 12:55 6258关键字:用Java来获取访问者真实的IP地址-超准确 下面分享 ... -
Shiro集成OAuth2
2015-04-21 10:31 12445关键字:Shiro集成OAuth2 参考:http://jin ... -
淘宝网架构分享总结 - 架构,分布式,淘宝,虚拟化,水平伸缩
2015-04-19 00:25 7635推荐综合架构交流群:JAVA开发高级群 点击入群!!! 关键 ... -
Zookeeper 和 SASL
2015-04-16 09:29 13636关键字:Zookeeper 和 SASL 介绍 这是一个描述Z ... -
非对称加密(RSA)加密解密实现通信JAVA端工具类(教程)
2015-04-15 17:27 1184关键字:非对称加密(RSA)加密解密实现通信JAVA端工具类( ... -
对称加密(AES)加密实现工具类(教程)
2015-04-15 17:11 2146关键字:对称加密(AES)加密实现工具类(教程) Java加 ... -
Curator-Framework开源Zookeeper快速开发框架介绍
2015-04-14 18:41 703关键字:Curator-Framework开源Zookeepe ... -
IM消息推送之Openfire
2015-04-13 13:40 2213关键字:IM消息推送之Openfire Openfire 采用 ... -
Nio框架之Mina的demo
2015-04-12 13:38 644关键字:Nio框架之Mina的demo 官网:http://m ... -
AMQP中文版协议规范
2015-01-23 17:12 2989关键字:AMQP中文版协议规范 AMQP中文版协议规范:ht ... -
数据库连接池选型
2014-12-04 18:32 1171关键字:数据库连接池选型 proxool(与spring不太 ... -
spring中的数据源配置信息加密方案
2014-10-22 10:36 1076关键字:spring中的数据源配置信息加密方案 附件是完整的 ... -
OAuth2.0的Java实现 Apache Amber
2014-10-09 23:20 795关键字:OAuth2.0的Java实现 Apache Ambe ... -
企业信息管理系统基础框架jeesite
2014-05-06 22:21 2586jeesite项目地址(使用说明,):http://jeesi ... -
java中文分词组件-word分词
2014-05-06 21:33 21987关键字:java中文分词组 ... -
java制作可执行文件EXE文件
2014-05-05 18:58 1603关键字:java制作可执行文件EXE文件 参考:http: ... -
Quartz任务调度器详解
2014-04-25 22:46 19001关键字: 参考文章:ht ... -
各种hash算法-hashcodeUtil
2014-04-24 15:36 4245关键字:各种hash算法-hashcodeUtil -
性能监控工具类(StopWatchUtil)
2014-03-21 15:12 5747关键字:性能监控工具类(StopWatchUtil) 附 ...
相关推荐
EL 表达式的使用详解 EL 表达式是一种在 Java 服务器页面(JSP)中使用的表达式语言。它提供了一种简单的方式来访问和操作 Java 对象的属性。EL 表达式广泛应用于 JSP、Servlet、JSF 等 Web 开发技术中。本文将详细...
EL 表达式语法介绍 EL 表达式是 Java 服务器页面(JSP)和 Java 服务器面板(JSF)中使用的一种表达式语言,用于在 Web 应用程序中实现动态内容。EL 表达式可以被解析成数值表达式和方法表达式,其中取值表达式用于...
### EL表达式详解 EL(Expression Language)表达式在Java Web开发中扮演着重要的角色,尤其是在JSP(Java Server Pages)技术中。本文将详细解释EL表达式的使用方法及其应用场景,帮助开发者更好地理解和掌握这一...
EL 表达式使用文档 EL 表达式(Express Language)是一种强大的表达式语言,用于简化 JSP 页面中的编程。EL 表达式可以嵌入在 JSP 页面内部,减少 JSP 脚本的编写,目的是要替代 JSP 页面中脚本的编写。 EL 表达式...
### EL表达式详解 #### 一、EL表达式的概述与基本使用 EL(Expression Language),即表达式语言,是JavaServer Pages (JSP) 2.0标准的一部分,用于简化JSP页面中对数据访问的操作。它允许开发者通过简单的语法在...
EL表达式主要用于简化JSP页面中的代码,提高可读性和可维护性。 **EL表达式的基本语法** EL表达式通常以"$"或 "#{}" 开头,如 `${expression}` 或 `#{expression}`。这里的`expression`是一个变量或方法调用,它...
当EL表达式被错误地当作字符串处理而不是被解析时,会导致其原本要展示的数据无法正确显示。这个问题在使用Java EE 5及以上版本时比较常见。 要解决这个问题,首先需要理解EL表达式的解析与web.xml配置文件中指定的...
EL表达式是Java EE中的一个强大功能,它允许开发者在JSP页面中简洁地访问和操作应用程序范围内的对象。EL表达式的语法类似于JavaScript,但它的主要目的是提供一种声明式的方式来获取和设置JavaBeans属性。例如,`${...
JAVAEE 实验报告 EL 表达式和 JSTL 标签库的使用 EL 表达式(Expression Language)是一种在 JSP 页面中使用的脚本语言,用于简化 JSP 页面的开发。EL 表达式可以访问 JSP 页面中的变量、对象和集合,进行逻辑操作...
**EL表达式** EL(Expression Language)表达式是Java服务器页面(JSP)2.0及更高版本中引入的一种轻量级、强大的脚本语言,主要用于简化Java Web应用程序中的数据访问。它允许开发者在JSP页面中直接访问JavaBean...
**EL表达式全解语法中文技术文档** **一、EL表达式基础** EL(Expression Language,表达式语言)是JavaServer Pages(JSP)2.0及更高版本中引入的一种强大的脚本语言,用于简化页面中的数据访问。EL表达式在JSP中...
本资源主要讲解了如何在JSTL中定义和使用自定义的EL表达式,这对于提高JSP页面的可读性和可维护性至关重要。 首先,理解JSTL的基础概念。JSTL由几个核心标签库组成,如fmt、fn、sql、xml等,它们提供了处理日期和...
### EL表达式详解 #### 一、EL表达式的语法结构及使用 EL(Expression Language)是一种简化了的数据访问语言,用于获取JavaBean属性值或调用其方法等操作。其基本语法结构为`${expression}`,这使得开发者能够在...
EL表达式通常在`${}`中书写,比如`${user.name}`用来获取名为`user`的对象的`name`属性。 **JSTL中的核心标签库(Core Tags)**包括用于控制流程、输出、URL处理、条件判断和迭代的标签。例如: - `<c:if>`用于条件...
EL表达式的主要目标是提高JSP页面的可读性和可维护性,减少脚本代码的数量。 ### EL表达式的基本语法 EL表达式通常以`$`符号开头,后跟大括号`{}`,如`${expression}`。表达式可以是简单的属性引用,也可以包含...
EL表达式PPT,详细讲解了EL表达式用法
EL 表达式教程 EL(Expression Language)是一种简洁的语言,用于在 JSP 中访问和操作数据。EL 表达式提供了简洁的语法来访问和操作数据,使得开发者可以更方便地在 JSP 中进行数据处理。 基本语法 EL 表达式的...
【JSP EL表达式简介】 EL(Expression Language)是JavaServer Pages(JSP)中的一种简洁的表达式语言,设计的初衷是为了简化JSP页面的编写。EL受到ECMAScript和XPath表达式语言的启发,提供了更高效的方式来访问和...
### EL表达式的使用方法 #### 一、简介 在Java Web开发中,EL(Expression Language)表达式是一种非常实用的功能,它允许开发者在JSP页面中动态获取对象属性的值或者执行简单的运算操作。通过使用EL表达式,可以...