您现在的位置:软界网技术中心软件开发Java > 技术显示
JSP 2.0(2)
2005-4-10 0:00:00   网友评论       阅读次数 点此评论
   JSP 2.0(2)

内置的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,H
ttpHeader,用户提交表单(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变量custom
er的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的方法才能被标记表达试访
问。

----------------------------
定义和使用函数
表达式语言允许你定义可在表达式中调用的函数。函数必须作为public类中的public s
tatic方法编写。同时要将文件映射到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是包含两个字段的一个表
单,用户输入两个数字并按下“求和”按钮,就会调用上面的函数并把两个数相加,结
果在同一个页面中显示出来。
----------------------------  
      来源: 作者:
 
【评论查看】
更多关于 JSP 2.0(2)  的技术