访问应用程序数据
可以使用点号运算符(.)访问作为对象属性的应用程序数据,也可使用方括号运算符[‘name’]访问命名的数组元素。
表达式${ data}表示名为data的scoped变量。可以使用点号(.)或方括号([])运算符从集合中检索属性值:
点号运算符用于访问命名的属性,比如表达式${ customer.name}表示scoped变量customer的name属性;方括号运算符可用于检索命名的属性,比如在${ customer[“name”]}中。也可以通过${ customers[0]}的形式来访问集合customers中的第一项。
表达式语言统一了对点号和方括号运算符的处理,因此${ customer.name}与${ customer[“name”]}是等价的。正如你看到的那样,表达式必须使用${ 和}包围起来。
EL的标识符求值方式是使用PageContext.findAttribute(String),把标识符作为一个属性来查找它的值。如果没有找到该属性,则返回null。
运算符
表达式语言支持算术运算符、关系运算符和逻辑运算符,以完成大多数的数据处理操作。此外,它还提供了一个用于测试一个对象是否为空的特殊运算符。运算符如表1所示。你可以使用empty运算符判断某个集合或字符串是否为空。比方说,只有当要求的命名参数param没有给出时,表达式${ empty param.name}才返回真。Empty运算符可以与“!”运算符一起使用,比如${ !empty param.name}当要求的命名参数param存在时返回真。
表1:表达式语言运算符
运算符
说明
+加-减*乘/ 或 div除% 或 mod模(求余)== 或 =等于!= 或 !=不等于< 或 lt小于> 或 gt大于<= 或 le小于等于>= 或 ge大于等于&& 或 and逻辑与|| or or逻辑或! 或 not逻辑非empty检查是否为空值a ? b : c条件运算符
隐含对象
除了运算符外,表达式语言还定义了一些隐含对象以支持网页作者访问需要的应用程序数据。表达式语言定义的隐含对象如表2所示,后面将给出使用这些隐含对象的一个例子。
表2:表达式语言中的隐含对象
隐含对象
内容
applicationScope应用程序范围内的scoped变量组成的集合cookie所有cookie组成的集合headerHTTP请求头部,字符串headerValuesHTTP请求头部,字符串集合initParam全部应用程序参数名组成的集合pageContext当前页面的javax.servlet.jsp.PageContext对象pageScope页面范围内所有对象的集合param所有请求参数字符串组成的集合paramValues所有作为字符串集合的请求参数requestScope所有请求范围的对象的集合sessionScope所有会话范围的对象的集合
表达式语言的例子
如你所言,网页作者无须学习Java也能够使用这种表达式语言。示例代码1显示了一些表达式的例子和隐含对象的使用。
代码示例1: ex1.jsp
要运行这个例子,请参照以下步骤,这里我们假定Tomcat 5.0安装在c:/tomcat5.0下。
切换目录到 c:/Tomcat5.0/webapps/jsp-examples 创建新目录,名字可以是任意的,比如jsp2-tutorial切换到jsp2-tutorial,把ex1.jsp复制并保存到该目录下启动Tomcat 5服务器:指向“开始”->“程序”->“Apache Tomcat 5.0”,单击“Apache Tomcat 5.0”来启动Tomcat在浏览器中输入http://localhost:8080/jsp-examples/jsp2-tutorial/ex1.jsp你将看到类似图1所示的画面。使用表达式语言就这么简单!
图1:JSP表达式语言和隐含对象
--------------------------------------------------------------------------------
注意: 在本文中,所有的JSP文件都保存在c:/Tomcat5.0/webapps/jsp-examples/jsp2-tutorial目录下。
--------------------------------------------------------------------------------
填充表单例子
隐含对象可用于读取填充表单的数据。代码示例2给出了一个简单的表单,该表单提示用户输入一个名字。
代码示例2: form.jsp
<HTML><HEAD><TITLE>Form Content</TITLE></HEAD><BODY> <H3>Fill-out-form</H3> <P> <FORM action="form.jsp" method="GET"> Name = <input type="text" name="name" value="${param['name']}"> <input type="submit" value="Submit Name"> </FORM> <P>The Name is: ${param.name}</BODY></HTML>
在本例中,当用户输入名字并单击“提交”按钮时,输入的名字就会显示同一页面中的“The Name is:”字样后面,如图2所示。
同样,运行这个例子只需要把form.jsp复制到c:/Tomcat5.0/webapps/jsp-examples/jsp2-tutorial下并用浏览器打开它。
图2:表单处理