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算术表达式 运算结果
11 {1 + 2} 3
1.2+2.33.5 {-4 - 2} -6
21242 {10%4} 2
10mod42 {1 < 2} true
1lt2true {1 > (4/2)} false
4.0>=3true {4.0 ge 3} true
100.0eq100true {(10*10) != 100} false
(1010)ne100false {(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]HTTPhost {header[“accept”]} 这里获得HTTP头部的accept值
header[useragent]HTTPuseragent访便访,EL便,访使.()访使[]访(EL访使) {data}表示名为data的scoped变量。可以使用点号(.)或方括号([])运算符从集合中检索属性值:(两种数据访问方式演示)
点号运算符用于访问命名的属性,比如表达式customer.namescopedcustomername {customer[“name”]}中。也可以通过customers[0]访customersEL {customer.name}与{ customer[“name”]}是等价的。  
  ----------------------------  
  以下可以读取用户提交的信息,假设用户提交信息为 ?name=myname&alies=now.net.cn(这里有两种访问方式,一种是使用[]来进行访问,另外一种是使用”.”来进行访问,两种访问效果是一样的。)
{param[“name”] } myname
param.namemyname {param[“alies”] } now.net.cn
param.aliesnow.net.cn访1.publicstaticpublicstaticpublic访JSP2.0使publicpublicstaticTLD使Java:Compute.javapackagejsp2.examples.el;importjava.util.;publicclassComputepublicstaticintadd(Stringx,Stringy)inta=0;intb=0;trya=Integer.parseInt(x);b=Integer.parseInt(y);catch(Exceptione)returna+b;javac2.TLD<function><description>addxandy</description><name>add</name><functionclass>jsp2.examples.el.Compute</functionclass><functionsignature>intadd(java.lang.String,java.lang.String)</functionsignature></function>JSP使53.JSPTaglib,jsp访5:math.jsp<uri=http://jakarta.apache.org/tomcat/jsp2exampletaglib<HEAD><TITLE>Functions</TITLE></HEAD><BODY><H3>AddNumbers</H3><P><FORMaction=math.jspmethod=GET>X=<inputtype=textname=xvalue= {param[“x”]}”>
< BR>
Y = < input type=”text” name=”y” value=”param[y]><inputtype=submitvalue=AddNumbers></FORM><P>Thesumis: {my:add(param[“x”],param[“y”])}
< /BODY>
< /HTML>
----------------------------**

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章