日期:2014-05-16  浏览次数:20404 次

在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变量组成的集合