在jsp页面中使用JavaBean

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/cjl13694270972/article/details/56479838

1.JavaBean

Javabean是一个使用java编写的可以重复利用、跨平台的软件组件。可以将Javabean看做一个具备一定功能的黑盒子,它的主要特性就是实现细节都封装起来。实际上Javabean是描述java的组件模型,在该模型中,Javabean组件可以修改或与其他组件组合以生成新组件或完整的应用程序。Javabean一种java类,是可以通过封装成为具体某种功能或者处理某个业务的对象。
jsp对于在web应用中集成Javabean组件提供了完善的支持,这种支持不仅能缩短开发时间(可以直接利用经测试的可信任的组件,避免重复开发),也是jsp应用带来了更多的可伸缩性。Javabean组件可以用来执行复杂的计算任务,或负责与数据库的交互,以及数据提取等。
Javabean类从形式上与一般的Java类差别不大,但须注意以下特征和要求:
(1)bean类必须有一个零参数(默认)构造函数。空构造函数在jsp元素创建bean时被调用。可以显式的定义一个零参数构造函数,也可以省略所有的构造函数,系统便会自动创建一个空的构造函数
(2)依照Javabean规范,在Javabean类中,为了令外界可访问字段xxx,而且不破坏封装的要求,不应当将其定义成public可见域,而是应当为其定义getXxx,setXxx方法,作为对应字段的存储方法,对于布尔字段,通常使用isXxx方法来查询字段值。这种封装到访问器中的字段称为属性,而getXxx、setXxx方法称为访问器
在jsp中使用一个Javabean之前,要先定义一个合法的Javabean类。该类必须具有一个默认构造函数,并且所有的字段只能通过访问器访问。如果人才管理系统的人才信息UserEntity实体类就具备了Javabean类特征,可以当做是一个一个Javabean使用:
//人才信息实体类
public class UserEntity {
private int id = 1;//职工编号
private String name="";//名称
private String sex="";//性别
private String birth ="";//生日
private String degree ="";//学位
private String in_date="";//入公司日期
private String trans_date="";//转正日期
private String dept="";//隶属部门
private String interest="";//兴趣爱好
private String specialty="";//特长
//setter和getter方法
.......

2.Javabean属性

Javabean属性用于描述Javabean的状态,如年龄,名称,电子邮件等。根据Javabean所处的环境,可以通过多种方式使用属性,可以在Javabean运行时通过getXxx和setXxx方法来改变其属性。
在Javabean设计中,按照属性的不同作用分为以下几类,其中简单属性和索引属性比较常用。
(1)简单(Simple)属性。一个Simple类型的属性表示一个伴随有一对getXxx()、setXxx()方法的变量。属性的名称与该属性相关的getXxx()、setXxx()方法相对应。如以下代码定义一个名为id的属性:
private int id = 1;//职工编号
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}

(2)索引(Indexed)属性。一个Indexed类型的Javabean属性表示一个数组值,使用与该属性相对应的setXxx方法和getXxx方法可以存取数组只能怪某个元素的数值。同时也可以使用另外两个同名方法一次设置获得整个数组的值,即属性的值,例如:
private int[] ids = {1,2,3,4,5};//职工编号
public int[] getIds() {
return ids;
}
public void setIds(int[] ids) {
this.ids = ids;
}
public int[] getIds(int index) {
return ids[index];
}
public void setIds(int index,int id) {
this.ids[index] = id;
}
(3)绑定(Bound)属性。Javabean组件Bound类型的属性具有如下特性:当该属性的值发生变化时,必须通过其他的Javabean组件对象。每当Bound属性的值改变时,会激发有个PropertyChange事件,改时间封装了发生属性改变的事件的属性名、属性的原值,属性变化后的新值,这个时间将被传递到订阅了该事件的其他Javabean组件中,之余接收到该事件的Javabean组件对象会做出何种动作则由组件自己决定。
(4)约束属性(Constrained)。Javabean组件的Constrained类型的属性具有以下性质:当这个属性的值将要发生变化的时候,与这个属性已经建立了某种监听关系的其他java对象都有权否决属性值的改变。

3.zaijsp中使用Javabean

在jsp页面中使用Javabean,主要涉及<jsp:useBean>,<jsp:setProperty>和<jsp:getProperty>3个jsp动作元素。
(1)实例化Javabean。jsp的动作元素<jsp:useBean>用于在jsp页面中实例化一个Javabean组件,这个实例化Javabean组件对象可以在这个jsp页面的其他地方被调用。
<jsp:useBean>的基本语法如下:
<jsp:useBean id="name" scope="page|request|session|application" class="className"/>
其中id属性是用来设定Javabean的名称,利用id可以识别同一个jsp页面中使用的不同JavaBean组件实例,class属性指定jsp引擎查找Javabean字节码的路径,一般是这个Javabean所对应的Javabean类名。如:com.company.UserEntity;scope属性用于指定Javabean实例对象的生命周期,也是Javabean的有效作用范围,scope的值可以是page,request,session和application。
如:
<jsp:useBean id="user2" scope="page" class="com.communal.UserEntity"></jsp:useBean>

id="user2"是指定Javabean的名称或标识,用于类实例的名称,scope="page"表示该Javabean的作用范围,page表示只在本jsp页面范围内可用,class="com.communal.UserEntity"则说明了该Javabean的类名
(2)存取Javabean的属性。在jsp页面中使用<jsp:useBean>将Javabean组件对象实例化后,就可以对它的属性进行存取,分别使用动作元素<jsp:setProperty>和<jsp:getProperty>
<jsp:setProperty property="propertyName" name="name" value=“string”/>
其中name用来指定Javabean的名称,这个Javabean必须首先使用<jsp:useBean>来实例化,它的值应与<jsp:useBean>操作中的id属性的值一样。property属性被用来指定Javabean需要设置属性的名称。value属性是要赋给Javabean由property指定名称的属性值。

<jsp:useBean id="user2" scope="session" class="com.communal.UserEntity"></jsp:useBean>
<jsp:setProperty property="*" name="user2"/>

这是Javabean的一个强大功能:当<jsp:setProperty>动作元素property属性的值为“*”时,表示希望jsp引擎将用户请求参数与Javabean进行自动匹配。当用户请求的参数名称与Javabean的属性名称相匹配时,自动完成属性赋值。如果request对象的参数值中有空值,那么对应的Javabean属性将不会设定任何值。同样,如果Javabean中有一个属性没有与之对应的request参数值,那么这个属性同样也不会设定。
<jsp:getProperty>操作搭配<jsp:useBean>操作一起使用,可以获取某个Javabean组件对象的属性值,并使用输出方法将这个值输出到页面。
<jsp:getProperty>动作的语法格式如下:
<jsp:getProperty property="propertyName" name="BeanName" />
其中,name指定Javabean的名称,需要注意name指定的Javabean组件对象必须已经使用<jsp:useBean>实例化;property:用来指定要读取的Javabean组件对象的属性的名称。
Javabean在服务器上存在的形式是某个类的实例对象,因而使用<jsp:getProperty>动作等效于直接使用该对象的getXxx方法取得属性值,如:
<%=beanName.getPropertyName()%>






展开阅读全文

没有更多推荐了,返回首页