- 浏览: 3471140 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
wanglf1207:
EJB的确是个不错的产品,只是因为用起来有点门槛,招来太多人吐 ...
weblogic-ejb-jar.xml的元素解析 -
qwfys200:
总结的不错。
Spring Web Flow 2.0 入门 -
u011577913:
u011577913 写道也能给我发一份翻译文档? 邮件437 ...
Hazelcast 参考文档-4 -
u011577913:
也能给我发一份翻译文档?
Hazelcast 参考文档-4 -
songzj001:
DbUnit入门实战
EL 简介
EL 全名为Expression Language,它原本是JSTL 1.0为方便存取数据所自定义的语言。当时EL
只能在JSTL 标签中使用,如下:
<c:out value="${ 3 + 7}">
程序执行结果为10。但是你却不能直接在JSP 网页中使用:
<p>Hi ! ${ username }</p>
到了JSP 2.0 之后,EL 已经正式纳入成为标准规范之一。因此,只要是支持Servlet 2.4 / JSP
2.0 的Container,就都可以在JSP 网页中直接使用EL 了。
除了JSP 2.0 建议使用EL 之外,JavaServer Faces( JSR-127 ) 也考虑将EL 纳入规范,由此
可知,EL 如今已经是一项成熟、标准的技术。
注意
假若您所用的Container 只支持Servlet 2.3/JSP 1.2,如:Tomcat 4.1.29,您就不能在
JSP 网页中直接使用EL,必须安装支持Servlet 2.4 / JSP 2.0 的Container。
EL 语法
EL 语法很简单,它最大的特点就是使用上很方便。接下来介绍EL 主要的语法结构:
${sessionScope.user.sex}
所有EL都是以 ${ 为起始、以} 为结尾的。上述EL范例的意思是:从Session的范围中,取得
用户的性别。假若依照之前JSP Scriptlet的写法如下:
User user = (User)session.getAttribute("user");
String sex = user.getSex( );
6-2-1 .与 [ ] 运算符 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}。因此,如果要动态取值时,就可以 用上述的方法来做,但 . 无法做到动态取值。 接下来,我们更详细地来讨论一些情况,首先假设有一个EL: ${expr-a[expr-b]} (1) 当expr-a 的值为null时,它会回传null。 (2) 当expr-b的值为null时,它会回传null。 (3) 当expr-a 的值为一Map 类型时: ● 假若 !value-a.containsKey(value-b)为真,则回传null。 ● 否则回传value-a.get(value-b)。 (4) 当expr-a 的值为List 或array 类型时: ● 将value-b 的值强制转型为int,假若不能转型为int 时,会产生error。 ● 然后, 假若value-a.get(value-b) 或Array.get(value-a, value-b) 产生 ArrayIndexOutOfBoundsException 或IndexOutOfBoundsException 时,则回传null。 ● 假若value-a.get(value-b)或Array.get(value-a, value-b)产生其他的异常时,则会产生 error。 ● 最后都没有任何异常产生时,回传value-a.get(value-b)或Array.get(value-a, value-b)。 (5) 当expr-a 的值为JavaBean 对象时: ● 将value-b 的值强制转型为String。 ● 假若getter 产生异常时,则会产生error。若没有异常产生时,则回传getter 的结果。 |
6-2-2 EL 变量
EL 存取变量数据的方法很简单,例如:${username}。它的意思是取出某一范围中名称为username
的变量。因为我们并没有指定哪一个范围的username,所以它的默认值会先从Page 范围找,假如
找不到,再依序到Request、Session、Application范围。假如途中找到username,就直接回传,
不再继续找下去,但是假如全部的范围都没有找到时,就回传null(见表6-1):
属性范围 在EL 中的名称
Page PageScope Request RequestScope Session SessionScope Application ApplicationScope |
自动搜索顺序
我们也可以指定要取出哪一个范围的变量(见表6-2):
范 例 说 明
${pageScope.username} 取出Page 范围的username 变量 ${requestScope.username} 取出Request 范围的username 变量 ${sessionScope.username} 取出Session 范围的username 变量 ${applicationScope.username} 取出Application 范围的username 变量 其中,pageScope、requestScope、sessionScope和applicationScope都是EL 的隐含对 |
6-3 EL 隐含对象
笔者在“第五章:隐含对象(Implicit Object)”中,曾经介绍过9 个JSP 隐含对象,而EL本
身也有自己的隐含对象。EL 隐含对象总共有11 个(见表6-4):
表6-4
隐含对象 类 型 说 明
PageContext javax.servlet.ServletContext 表示此JSP 的PageContext
PageScope java.util.Map 取得Page范围的属性名称所对应的值
RequestScope java.util.Map
取得Request 范围的属性名称所对应
的值
sessionScope java.util.Map
取得Session 范围的属性名称所对应
的值
applicationScope java.util.Map
取得Application 范围的属性名称所
对应的值
param java.util.Map
如同
ServletRequest.getParameter(String
name)。回传String 类型的值
续表
隐含对象 类 型 说 明
paramValues java.util.Map 如同
隐含对象 类 型 说 明
ServletRequest.getParameterValues(String
name)。回传String []类型的值
header java.util.Map
如同ServletRequest.getHeader(String
name)。回传String 类型的值
headerValues java.util.Map
如同ServletRequest.getHeaders(String
name)。回传String []类型的值
cookie java.util.Map 如同HttpServletRequest.getCookies( )
initParam java.util.Map
如同
ServletContext.getInitParameter(String
name)。回传String 类型的值
发表评论
-
字符串分割--java中String.split()用法
2013-03-06 14:25 74094在java.lang包中有String.sp ... -
用 HttpServletResponseWrapper 实现 Etag 过滤器
2012-07-09 16:58 3703原文出处:http://blog.chenlb.com/200 ... -
Fitnesse使用
2012-05-05 13:27 23422Fitnesse 的使用 一,介绍 Fitnesse是一种 ... -
Customizing the new FitNesse parser
2012-05-05 13:13 2090FitNesse began its life using ... -
java application中内嵌ActiveX控件
2011-11-14 15:57 5467我这里用的是SWT/JFace开发application,SW ... -
Google Java Developer Tools Downloads
2011-08-09 00:04 2308WindowBuilder Pro原来叫WindowB ... -
Jalita
2011-08-06 00:49 1521Jalita (Java light terminal ada ... -
【转】用Java写字符终端界面
2011-07-29 13:13 2079终端界面GUI开源项目charva。 这个框架让你可以用开发 ... -
[转]mybatis下的分页,支持所有的数据库
2011-07-21 13:21 14787大 家都知道,mybatis的自带分页方法只是逻 ... -
Java framework for text- & console-based forms?
2011-07-21 01:06 1670charva jcurses JNA , ... -
JNA(Java Native Access)学习入门
2011-07-21 01:04 22522Java Native Access 项目 在 ... -
JAVA上加密算法的实现用例
2011-06-25 12:38 4836来源:www.ibm.com ... -
如何将GlassFish作为Windows服务运行
2011-05-18 23:21 2315本文档来自GlassFish官方网站,详细介绍了将 G ... -
JAVA UDP打洞必备知识点---NAT
2011-05-05 12:56 8605一、引言 RFCl631 ... -
Keystore概念,Keytool工具使用
2011-04-28 16:20 2862近来由于项目需要做Single Sign On, 研究了一 ... -
利用Eclipse Profile Plugin监控分析Tomcat性能
2011-04-18 16:14 3671目前新版本的Eclipse在启动应用服务器的时候有一个新的选 ... -
m2eclipse: Eclipse is running in a JRE, but a JDK is required
2011-02-04 23:43 2509Eclipse 安装了Maven插件,启动Eclipse ... -
利用JNative实现Java调用动态库
2010-10-18 00:43 2060由于项目要求,需要用J ... -
RHEL5支持大内存
2010-10-08 16:19 2951安装 RHEL 5 ,硬件为 4G 内存,安装完成 ... -
Windows Server 2003 和 Windows 2000 提供大内存支持
2010-10-08 16:19 1815本文介绍物理地址扩展 ...
相关推荐
jspEL表达式 jspEL表达式 jspEL表达式 jspEL表达式
java中JSP和el表达式的隐含对象,能够让你对对jsp的更熟悉
EL表达式语言 EL语言是JSTL输出(输入)一个JAVA表达式的表示形式。 在JSTL中,EL语言只能在属性值中使用。...比如:${username}" />中的${username}就是一个EL,它相当于JSP语句(“username”)%>或(“username”)%>
el表达式,jsp.el表达式,页面el表达式,el表达式注释 el表达式的解释,el表达式的应用,java el表达式
jsp el表达式详解
关于jsp中EL(Expression Language)表达式的相关简介
EL 提供了在 JSP 脚本编制元素范围外使用运行时表达式的功能。脚本编制元素是指页面中能够用于在 JSP 文件中嵌入 Java 代码的元素。它们通常用于对象操作以及执行那些影响所生成内容的计算。JSP 2.0 将 EL 表达式...
JSP-EL表达式 一些简单的介绍 希望对大家有所帮助吧
JSP中EL表达式,主要介绍EL的详细用法,熟练掌握EL知识。
EL表达式的概念,详细介绍了EL表达式相关使用方法以及注意要点
JSP与EL详解
javaweb开发中关于jsp 的el表达式比较全非常好用,非常适用于初学者
jsp el 表达式语言文档
NULL 博文链接:https://li1314aishui.iteye.com/blog/1314537
JSP中的EL表达式介绍.doc 详细介绍EL表达式的应用
EL表达式总是用大括号括起,而且前面有一个美元符($)前缀:${expression}。 表示式中第一个命名变量要么式一个隐式对象,要么是某个作用域(页面作用域、请求作用域、会话作用域或应用作用域)中的一个属性.........
下面小编就为大家带来一篇jsp页面中EL表达式被当成字符串处理不显示值问题的解决方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
JAVAWEB项目, 在JSP页面不使用任何java代码,使用servlet和EL表达式,这里是EL所需的两个jar包
EL表达式EL表达式 JSTL JSP标准标签库 在EL表达式中只能进行逻辑运算 并不能进行逻辑控制 也就是说 使用了EL表达式 还是无法真正实现JSP页面完全无脚本 这时我们可以借助JSTL来
在JSP页面用EL表达式调用一些函数,可以减少小脚本的出现