1. 使用 beans
为了在JSP 页面中使用benas,我们必须使用JSP 动作标签:useBean
useBean 格式:
<jsp:useBean id= “给bean 起的名字” class= “创建beans 的类”scope= “bean 有效范围”></jsp:useBean>
当服务器上某个含有 useBean 动作标签的JSP 页面被加载执行时,JSP 引擎将首先根据id 的名字,在一个同步块中,查找JSP 引擎内置pageContent 对象中是否含有名字id 和作用域scope 的对象,如果这个对象存在,JSP 引擎就分配一个这样的对象给客户,如果在pageContent 中没有查找到指定作用域、名字是id 的对象,就根据class指定的类创建一个名字是id 对象,即创建了一个名字是id 的beans,并添加到pageContent 内置对象中,并指定该beans 的作用域是scope,同时JSP 引擎分配给客户一个作用域是scope、名字是id 的beans。
useBean 标签中scope 取值的不同情况阐述如下:
scope 取值page
JSP 引擎分配给每个客户的beans 是互不相同的,也就是说,尽管每个客户的beans 的功能相同,但它们占有不同的内存空间。该beans的有效范围是当前页面,当客户离开这个页面时,JSP 引擎取消分配给该客户的beans。
scope 取值session
JSP 引擎分配给每个客户的beans 是互不相同的,该beans 的有效范围是客户的会话期间,也就是说,如果客户在多个页面中相互连接,每个页面都含有一个useBeans 标签,这些useBean 标签中id 的值相同,并且scope 的值都是session,那么,该客户在这些页面得到的beans 是相同的一个。如果客户在某个页面更改了这个beans 的属性,其它页面的这个beans 的属性也将发生同样的变化。当客户关闭浏览器时,JSP 引擎取消分配给客户的beans。
scope 取值request
JSP 引擎分配给每个客户的beans 是互不相同的,该beans 的有效范围是request 期间。客户在网站的访问期间可能请求过多个页面,如果这些页面含有socope 取值是request 的useBeans 标签,那么pageCotent 对象在每个页面分配给客户的beans 也是互不相同的。JSP引擎对请求作出响应之后,取消分配给客户的这个beans。
scope 取值application
JSP 引擎为每个客户分配一个共享的beans,也就是说,所有客户共享这个beans,如果一个客户改变这个beans 的某个属性的值,那么所有客户的这个beans 的属性值都发生了变化。这个beans 直到服务器关闭才被取消。
注:当使用作用域是session 的beans 时,要保证客户端支持Cookie.
为了使服务器的所有web 服务目录下的JSP 页面文件都能使用我们的beans,我们必须将上面编译通过生成的字节码类文件:Circle.class 拷贝到JSP 引擎的classes 文件夹下, 即D:tomcat\Jakarta-tomcat-4.0\classes 下,另外,在使用 beans 的JSP 页面中,必须有如下的import 指令:<@page import= “Circle”> 如果想让某个 beans 只对examples 目录下的JSP 页面可用,那么创建该beans 的字节码文件需存放在webapps/example/Web-inf/classes目录中,
2.获取和修改 beans 的属性
当我们使用useBean 动作标签创建一个beans 后,在java 程序片中这个beans 就可以调用方法产生行为,比如修改属性。获取或修改beans 的属性还可以使用动作标签getProperty、setProperty
2.1getProperty 动作标签
使用该标签可以获得beans 的属性值,并将这个值用串的形式显示给客户
getProperty 动作标签:
<jsp:getProperty name= “beans 的名字” property= “beans 的属性” /></jsp:getProperty>
其中,name 取值是beans 的名字,用来指定要获取哪个beans 的属性的值;property 取值是该beans 的一个属性的名字。该指令的作用相当于在程序片中使用beans 调用getXxx()方法。
2.2 setProperty 动作标签
使用该标签可以设置beans 的属性值。
setProperty 动作标签可以通过3 种方式设置beans 属性的值。
(1)将benas 属性的值设置为一个表达式的值或字符串。
本栏目更多精彩内容:http://www.bianceng.cn/webkf/JSP/
benas 属性的值设置为一个表达式的值:<jsp:setProperty name=“beans 的名字” property= “beans 的属性” value= “<%=expression%>” />
benas 属性的值设置为一个字符串:<jsp:setProperty name=“beans 的名字” property= “beans 的属性” value=字符串 />
(2)使用setProperty 设置beans 属性值的第2 种方式是:
通过HTTP 表单的参数的值来设置beans 的相应属性的值,要求表单参数名字必须与beans 属性的名字相同,JSP 引擎会自动将字符串转换为beans 属性的类型。
<jsp:setProperty name= "beans 的名字" property="*" />
该标签不用再具体指定 beans 属性的值将对应表单中哪个参数指定的值,系统会自动根据名字进行般配对应。
(3)使用setProperty 设置beans 属性值的第3 种方式是:
通过request 的参数的值来设置beans 的相应属性的值,要求request 参数名字必须与beans 属性的名字相同,JSP 引擎会自动将request 获取的
字符串数据类型转换为beans 相应的属性的类型。
<jsp:setProperty name= "beans 的名字" property=" 属性名" param= “参数名” />
注:需要注意的是,只有提交了和该beans 相对应的表单后,该指令标签才被执行。
注:不能在<jsp:setProperty>中同时使用value 和param。