本文讲述在JSP2.0中使用EL表达式语言。在JSP2.0之前,网页作者只能使用表达式< %= aName %>访问系统的值。而JSP2.0中可以使用EL数据访问语言,从而方便地访问和处理应用程序数据。
EL(表达式语言)是一种数据访问语言,可以方便地访问和处理应用程序数据,而无需使用scriptlet或者请求时(request-time)表达式的值。(不需要使用< % 和%>来获得数据,EL使JSP页面编写人员摆脱了java语言,使用户即使不懂JAVA也可以轻松编写JSP程序.
在JSP2.0之前,网页作者只能使用表达式< %= aName %>访问系统的值,比如:
- < someTags:aTag attribute="< %= pageContext.getAttribute("aName") %>">
或者
- < % = aCustomer.getAddress().getCountry() %>
而表达式语言允许网页作者使用简单的语法访问对象。比如要访问一个简单变量,可以像下面这样写:
- < someTags:aTag attribute="${aName}">
而访问JavaBeans属性,可以使用:${aCustomer.address.country}
Tomcat对EL扩展表达式的支持和配置:
tomcat5.0默认支持EL,同时用户可以在Web.xml文件中对整个web应用程序进行设置或者在每个页面中单独设置page指令来控制TOMCAT是否对EL的支持。
----------------------------
JSP2.0中EL扩展表达式语言的设置
有了JSP2.0,就可以使用EL扩展表达式了。对于一个单个JSP页面,你可以使用定义page指令来设置jsp页面是否支持EL。默认是支持EL(如果要页面不支持EL,请设置为isELIgnored=true;
- < %@ page isELIgnored="true|false"%>
对于整个JSP应用程序,要修改WEB.XML配置(tomcat5.0.16默认是支持EL的);
- < jsp-property-group>
- < description> For config the ICW sample application < /description>
- < display-name>JSPConfiguration< /display-name>
- < url-pattern>/jsp/datareset.jsp< /url-pattern>
- < el-ignored>true< / el-ignored>
- < page-encoding>ISO-8859-1< /page-encoding>
- < scripting-invalid>true< /scripting-invalid>
- < include-prelude>/jsp/prelude.jspf< /include-prelude>
- < include-coda>/jsp/coda.jspf< /include-coda>
- < /jsp-property-group>
----------------------------
JSP2.0中表达式运算符号:
EL表达式运算符包括算数运算符(+-*/),关系运算符(>< )和逻辑运算符(&& || !),还有empty 判断值是否为空,同时EL能够对字符串,数字等各种类型的数据之间的自动转换,使EL 兼容了JAVASCRIPT等脚本语言的优点,摆脱了JAVA语言严格的数据类型限制,使用起来简单,只需要几分钟就可以轻松掌握(对于不懂java的网页编写人员实在是一件好事)。
----------------------------
JSP2.0中各种运算符运算实例
以下是EL运算符列表,其中empty可以检查某个值是否为空
运算符 说明
+ 加
- 减
* 乘
/或div 除
% 或 mod 模(求余)
== 或 = 等于
!= 或 != 不等于
< 或 lt 小于
>或gt 大于
< =或le 小于等于
>=或ge 大于等于
&& 或 and 逻辑与
|| 或 or 逻辑或
! 或 not 逻辑非
empty 检查是否为空值
a ? b : c 条件运算符
----------------------------
EL表达式使用简单,在网页中"${}"表示是EL表达式。${1+1} 显示为 2
----------------------------
JSP2.0中EL算术表达式 运算结果
- ${1} 1
- ${1 + 2} 3
- ${1.2 + 2.3} 3.5
- ${-4 - 2} -6
- ${21 * 2} 42
- ${10%4} 2
- ${10 mod 4} 2
- ${1 < 2} true
- ${1 lt 2} true
- ${1 > (4/2)} false
- ${4.0 >= 3} true
- ${4.0 ge 3} true
- ${100.0 eq 100} true
- ${(10*10) != 100} false
- ${(10*10) ne 100} false
- ${(1==2) ? 3 : 4} 4
----------------------------
内置的11个隐含对象:
为方便的获得WEB应用程序的相关数据,EL表达式语言定义了一些隐含对象。隐含对象共有11个对象,(JSP中具有9个隐含对象,EL比JSP中具有更多的隐含对象,这样EL比JSP更方便的获取数据) 使用这些对象可以很方便的访问Web 程序数据。
隐含对象包括Session(获得当前web程序的Session值),cookie(获得WEB程序的Cookie值),header,headerValues(获得用户的Http数据访问头部信息),Param和ParamValues(获得用户提交数据参数)等。
使用${隐含对象名称["元素"]} 就可以获得这个值了,例如${header("host")} 可以显示http头部中host的值,${param("username")},可以获得显示用户表单提交的用户. 使用${empty(param("username")} 可以判断用户提交表单是否为空等。(这样比jsp1.2中使用request.getParamter("username") 要简化和方便很多了)
----------------------------
隐含对象及隐含对象访问实例
EL 表达式定义了11个隐含对象,使用这11个对象可以很方便的读取到session,cookie,HttpHeader,用户提交表单(param)等
隐含对象 内容
applicationScope 应用程序范围内的scoped变量组成的集合
cookie 所有cookie组成的集合
header HTTP请求头部,字符串
headerValues HTTP请求头部,字符串集合
initParam 全部应用程序参数名组成的集合
pageContext 当前页面的javax.servlet.jsp.PageContext对象
pageScope 页面范围内所有对象的集合
param 所有请求参数字符串组成的集合
paramValues 所有作为字符串集合的请求参数
requestScope 所有请求范围的对象的集合
sessionScope 所有会话范围的对象的集合
下面是获取HTTP访问头部数据和用户提交数据的示例
EL表达式 运算结果
${header["host"]} 这里得到HTTP连接头部的host值
${header["accept"]} 这里获得HTTP头部的accept值
${header["user-agent"]} 这里获得HTTP头部的user-agent值
----------------------------
访问应用程序数据
除了可以方便的访问内置的隐含对象外,EL还可以方便的到应用程序数据,访问应用程序数据使用两种方式 . (点号运算符)访问对象的属性,也可以使用[] 来访问数组元素(实际上EL中访问隐含对象数据也是使用这两种方式的)
表达式${data}表示名为data的scoped变量。可以使用点号(.)或方括号([])运算符从集合中检索属性值:(两种数据访问方式演示)
点号运算符用于访问命名的属性,比如表达式${customer.name}表示scoped变量customer的name属性;
方括号运算符可用于检索命名的属性,比如在${customer[“name”]}中。也可以通过${customers[0]}的形式来访问集合customers中的第一项。
EL表达式语言同时还统一了对点号和方括号运算符的处理,因此${customer.name}与${ customer[“name”]}是等价的。
----------------------------
以下可以读取用户提交的信息,假设用户提交信息为 ?name=myname&alies=now.net.cn(这里有两种访问方式,一种是使用[]来进行访问,另外一种是使用"."来进行访问,两种访问效果是一样的。)
- ${param["name"] } myname
- ${param.name} myname
- ${param["alies"] } now.net.cn
- ${param.alies} now.net.cn
----------------------------
访问应用程序数据需要进行以下几个步骤:
1.编写public类的static public 方法,只有static public的方法才能被标记表达试访问。
----------------------------
JSP2.0中定义和使用函数
表达式语言允许你定义可在表达式中调用的函数。函数必须作为public类中的public static方法编写。同时要将文件映射到TLD标志库文件中。
为了说明函数的使用,我们举一个简单的例子,把两个数相加。首先要编写求两数之和的Java方法代码,如代码示例所示,这里定义了一个静态方法,它接收两个字符串参数,把它们解析成整数并返回它们的和。
示例文件:Compute.java
- package jsp2.examples.el;
- import java.util.*;
- public class Compute {
- public static int add(String x, String y) {
- int a = 0;
- int b = 0;
- try {
- a = Integer.parseInt(x);
- b = Integer.parseInt(y);
- }catch(Exception e) {}
- return a + b;
- }
- }
用javac把这段代码编译成功后,下一步就要把函数的签名映射到标签库。
----------------------------
2.将方法映射到TLD表中
----------------------------
配置标记库描述文件 函数描述符
- < function>
- < description>add x and y< /description>
- < name>add< /name>
- < function-class>jsp2.examples.el.Compute
- < /function-class>
- < function-signature>int
- add(java.lang.String,java.lang.String)
- < /function-signature>
- < /function>
现在我们就可以编写一个JSP页面来使用这个函数。代码示例5是包含两个字段的一个表单,用户输入两个数字并按下“求和”按钮,就会调用上面的函数并把两个数相加,结果在同一个页面中显示出来。
----------------------------
3.在JSP页面中调用要引用的Taglib标记,然后就可以在jsp页面中访问了。
----------------------------
代码示例5: math.jsp
- < %@ taglib prefix="my"
- uri="http://jakarta.apache.org/tomcat/jsp2-example-taglib %>
- < HEAD>
- < TITLE>Functions< /TITLE>
- < /HEAD>
- < BODY>
- < H3>Add Numbers< /H3>
- < P>
- < FORM action="math.jsp" method="GET">
- X = < input type="text" name="x" value="${param["x"]}">
- < BR>
- Y = < input type="text" name="y" value="${param["y"]}">
- < input type="submit" value="Add Numbers">
- < /FORM>
- < P>
- The sum is: ${my:add(param["x"],param["y"])}
- < /BODY>
- < /HTML>
----------------------------
相关推荐
在JSP2.0中使用EL表达式语言.doc
利用jsp2.0 标签 el表达式 做的项目 开发工具netbeansIDE6.5
JSP 表达式语言定义可在表达式中使用的以下文字: 文字 文字的值 Boolean true 和 false Integer 与 Java 类似。可以包含任何正数或负数,例如 24、-45、567 Floating Point 与 Java 类似。可以包含任何正...
JSP 2.0的新特性——表达式语言,灵活运用表达式语言能够使JSP的开发更加方便
表达式语言(EL):表达式语言(Expression Language,EL)是JSP 2.0中引入的性特性,在JSP中使用EL表达式可以获取并显示页面数据。
EL表达式,全名为Expression Language。它原本是JSTL 1.0为方便存取数据所自定义的语言。当时EL只能在JSTL 标签中使用,JSP2.0后,EL成为JSP规范的一部分,并增加了新的特性。
EL表达式:expression language,即表达语言,它是为了便于存取数据而定义的一种语言,JSP2.0之后才成为一种标准。形式:以“${”开头,以“}”结尾,通过PAGE指令来说明是否支持EL表达式,具体举例: ; charset=GB...
止.JSP2.0中默认的启用EL语言. 4-- EL语言可显示 逻辑表达式如${true and false}结果是false 关系表达式如${5>6} 结 果是false 算术表达式如 ${5+5} 结果是10 5--EL中的变量搜索范围是:page request session ...
1.详细介绍了JSTL标准标签库的使用方法. 2.全面介绍了EL表达式的使用方法 3.重点介绍了JSP2.0的规范 4.Servlet2.4和JSP2.0的实现原理详细说明
JSTL是一个不断完善的...但是在即将推出的JSP 2.0中是作为标准支持的。 JSTL目前的最新版本为1.02,最终发布版为1.0。JSTL包含两个部分:标签库和EL(Expression Language表达式语言)语言。标签库目前支持四种标签:
使用jsp2.0技术做的网上书店,前台页面完全使用el表达式
–CTYPE web-app PUBLIC </sp> “-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN” “http://java.sun.com/dtd/web-app_2_3.dtd”> 在默认情况下,Servlet 2.3 / JSP 1.2是不支持EL表达式的,而Servlet ...
EL表达式 EL表达式是为了便于获取数据而定义的一种语言,JSP 2.0之后才成为一种标准。
详细的介绍了jstl 和el的用法。 EL表达式:JSP 2.0以后,EL表达式已经被纳入正式规范,servlet 2.4以上都默认支持。
本手册涵盖了jsp2.0编程基本知识,覆盖面广:包含jsp编程基础、jsp2.0新增特性、EL表达式、JSTL1.1、JavaBean知识、页面处理、Filter过滤器、JDBC、MVC拓展等知识,本人从中受益颇多,分享给大家!
本手册涵盖了jsp2.0编程基本知识,覆盖面广:包含jsp编程基础、jsp2.0新增特性、EL表达式、JSTL1.1、JavaBean知识、页面处理、Filter过滤器、JDBC、MVC拓展等知识,本人从中受益颇多,分享给大家!
本手册涵盖了jsp2.0编程基本知识,覆盖面广:包含jsp编程基础、jsp2.0新增特性、EL表达式、JSTL1.1、JavaBean知识、页面处理、Filter过滤器、JDBC、MVC拓展等知识,本人从中受益颇多,分享给大家!
本手册涵盖了jsp2.0编程基本知识,覆盖面广:包含jsp编程基础、jsp2.0新增特性、EL表达式、JSTL1.1、JavaBean知识、页面处理、Filter过滤器、JDBC、MVC拓展等知识,本人从中受益颇多,分享给大家!
本手册涵盖了jsp2.0编程基本知识,覆盖面广:包含jsp编程基础、jsp2.0新增特性、EL表达式、JSTL1.1、JavaBean知识、页面处理、Filter过滤器、JDBC、MVC拓展等知识,本人从中受益颇多,分享给大家!