Java EE JavaBean组件
一、简介
JavaBean组件是一些可移植、可重用并可组装到应用程序中的Java类,类必须是具体的和公共的。
符合下列设计规则的任何Java类均是以JavaBean:
1.对数据类型“protype”的每个可读属性,Bean下必须有下面签名的一个方法:public proptype getProperty(){}
2.对数据类型“protype”的每个可写属性,Bean下必须有下面签名的一个方法:public void setProperty(proptype x){}
3.定义一个不带任何参数的构造函数。
二、JavaBean与JSP的结合
JSP在动态Web应用开发中得到了越来越多的应用,JSP提供的9个内置对象极大的方便了JSP页面的控制与开发,但由于应用程序功能要求越来越强,JSP页面变得越来越臃肿且难以控制。也正因如此JSP与JavaBean相结合逐渐成为最常见的Web应用程序开发方式。
(一)、JSP中JavaBean相关标记
JSP页面中与JavaBean有关的标记有<jsp:useBean>、<jsp:setProperty>和<jsp:getProperty>三个。
(1)、<jsp:useBean>
该标记声明一JavaBean实例,该实例具有一定生存范围及一个唯一id,JSP页面通过这个唯一的id来识别JavaBean并通过id.method类似语句操作JavaBean。
eg:声明类Student,id为s1。
1 <jsp:useBean id="s1" class="Student" scope="application"></jsp:useBean>
scope属性值指明JavaBean的作用域,其默认值为page。
(2)、<jsp:setProperty>
该标记用于设定一个已经被创建的JavaBean组件的属性值。
eg:设定Student组件s1的classno属性
1 <jsp:setProperty name="s1" property="classno" value="56789"></jsp:setProperty>
name属性值对应JavaBean组件的id值;property属性指定想设定属性值的属性名;value属性指定属性值,该值可为字符串也可为表达式。
(3)、<jsp:getProperty>
该标记用于返回一个已经被创建的JavaBean组件的属性值。
eg:获取Student组件s1的name属性的属性值
1 <jsp:getProperty name="s1" property="name"></jsp:getProperty> 2 等价于: 3 <%=s1.name %>
(二)、JavaBean的Scope属性说明
每个JavaBean均有一个生存范围,而每个JavaBean只能在它定义的范围中才可使用,在其定义的范围外将无法访问。
<jap:useBean>利用Scope属性来声明JavaBean的生存范围。
JSP为JavaBean设定的范围可以是:page、request、session及application。
(1)、page
page是JavaBean默认生存范围。
Scope值为page的JavaBean能在包含"<jsp:useBean>"元素的JSP文件及此文件中的所有静态包含文件中使用,直至页面执行完毕向客户端发回响应或转到另一文件为止。
(2)、request
Scope值为request的JavaBean作用于任何相同请求的JSP文件中,直至页面执行完毕向客户端发回响应或在此之前已经通过某种方式(重定向、链接等)转到另一文件为止。
还可通过使用request对象访问JavaBean。
(3)、session
Scope值为session的JavaBean,从创建JavaBean开始,就能在任何使用相同session的JSP文件中使用这个Bean,该Bean存在于整个session生存期内,任何分享此session的JSP文件都能使用同一Bean。
在session的生存周期内,对该Bean的任何改动均会影响到在此session内的任意page、request对该Bean的调用。当然前提是必须在创建此Bean的文件里事先用page指令指定了session=true。
(4)、application
Scope值为application的JavaBean,作用于整个application的生存周期内,从创建Bean开始就能在任何使用相同application的JSP文件中使用Bean。在该Bean存在于整个application生存周期内,任何分享此application的JSP文件均能使用同一Bean。在application生存周期内,对此Bean属性的任何改动均会影响到此application内另一page、另一request及另一session里对该JavaBean的调用。