Chinaunix首页 | 论坛 | 博客
  • 博客访问: 30467359
  • 博文数量: 708
  • 博客积分: 12163
  • 博客等级: 上将
  • 技术积分: 8240
  • 用 户 组: 普通用户
  • 注册时间: 2007-12-04 20:59
文章分类

全部博文(708)

分类: Java

2008-12-15 10:53:51

表达式语言 (Expression Language) 是一种简化的数据访问方式。使用表达式语言可以以标记格式方便地访问JSP 的隐含对象和JavaBeans 组件,在 JSP2.0 中,建议尽量使用表达式语言使JSP 文件的格式一致,避免使用Java脚本。

表达式语言可用于简化JSP页面的开发,允许美i设计人员使用表达式语言的语法获取业务逻辑传过来的变量值。

注意:表达式语言是JSP 的一个重要特性,它并不是一种通用的程序语言,而仅仅是一种数据访问语言,可以方便地访问应用程序数据,避免使用Java脚本。

表达式语言的语法格式是:

${expressionl

1. 表达式语言使用算术和逻辑运算符

表达式语言支持的算术运算符非常多,在Java语言里支持的算术运算符,表达式语言都可以使用。

看下面的JSP页面

 〈 contentType="text/html;charset=gb2312"%〉

表达式语言算术运算符


表达式语言-算术运算符














表达式语言计算结果
\${ (1==2) ? 3 : 4}${ (1==2) ? 3 : 4}
该页面运行了基本表达式运算符号,运行的效果如图2.34所示。
 
图 2.34 算数运算的表达式语言

注意:如需要在支持表达式语言的页面中正常输出"$"符号,则在"$"符号前加特义字符 "γ',否则系统以为"$"是表达式语言的标记。

下面是逻辑运算符的JSP页面代码:

 〈 contentType="text/html;charset=gb2312"%〉


表达式语言-逻辑运算符

表达式语言-逻辑运算符




数字之间的比较:





<1--直接比较两个数字一〉












表达式语言计算结果
\${1 < 2}${l < 2}
\${100.0 eq 100}${100.0 eq 100}
\${ (10*10) != 100}${ (10*10) != 100}
\${(10*10) 且e100}${(10*10) ne 100}

字符之间的比较:









表达式语言计算结果
\${'a' < 'b'}${'a' < 'b'}
\${'hip' > 'hit'}${'hip'> 'hit'}
\${'4' > 3}${'4' > 3}
因此,表达式语言不仅可在数字与数字之间比较,还可在字符与字符之间比较,字符串的比较是根据其编码的数字来比较大小的。
 

2. 表达式语言的内置对象

使用表达式语言可以直接获取请求参数,可获取页面中某个JavaBean的属性值,获取请求头及获取session属性值等,这些都得益于表达式语言的内置对象。

表达式语言包含如下11 个内置对象。

pageContext:代表该页面的 pageContext对象,与 JSP 的 pageContext 内置对象相同。

pageScope: 用于获取 page 范围的属性值。

requestScope: 用于获取 request 范围的属性值。

sessionScope: 用于获取 session 范围的属性值。

applicationScope: 用于获取 application 范围的属性值。

p缸am: 用于获取请求的参数值。

paramValues: 用于获取请求的参数值,与param 的区别在于,该对象用于获取属性值为数组的属性值。

header: 用于获取请求头的属性值。

headerValues: 用于获取请求头的属性值,与 header 的区别在于,该对象用于获
取属性值为数组的属性值。

initParam: 用于获取请求 Web 应用的初始化参数。

cookie: 用于获取应用的 Cookie 值。

看下面的 JSP 页面代码:





reverse
java.
lang.String reverse( java.lang.String )


countChar

〈 prefix="my" uri="/tags/mytag"在〉


表达式语言-自定义函数


表达式语言自定义函数




请输入---个字符串:

字符串=


〈 contentType="text/html;charset=gb23l2"%〉

表达式语言-内置对象

表达式语言"内置对象




请输入你的名字:

\${initParam["author"]}丰{initParam["author"] }























表达式语言计算结果
\S{param[ "name"] }${param["name"]} 
\${my:reverse(param["name"])}${my:reverse(param["name"])} 
\${my:reverse(my:reverse(param["name"]))}${my:reverse(my:reverse(param["name"]))} 
\${my:countChar(param["name"])}${my:countChar(param["name"])} 



注意:函数处理类的方法必须是publicstatic,因为这些方法是直接调用,无须实例化。自定义函数,也提供了类似于自定义标签库的作用,使用简单的指令就可以完成复杂的功能。与自定义标签库不同的是,可以在表达式语言中直接使用函数。

阅读(2382) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~