JavaBean



定义

JavaBean是描述Java的软件组件模型,通过JavaBean可以实现代码重用,实现显示层和业务层的代码分离。小型项目开发中常采用JSP+JavaBean的模式来开发。

JavaBean就是一个Java类,其可以重复使用,标准的JavaBean中一定有一个默认的公有构造函数,JavaBean中的属性一般是私有的,以便对数据进行封装,同时应提供public修饰的getXXX()和setXXX()方法,以便对属性进行读写操作。


编写JavaBean和使用JavaBean

1、编写JavaBean

JavaBean分为可视组件和非可视组件,在Web开发中主要使用非可视组件,我们不用去关心它的外观,主要关心它的属性和方法。

编写JavaBean就是编写一个Java类,所以只要会写类就能编写JavaBean。这个类创建的一个对象称为JavaBean,简称bean。为了能让使用这个bean的应用程序构建工具(如JSP引擎)知道这个bean的属性和方法,只须在类的方法命名上遵循以下规则:

(1)如果类的成员变量的名字是xxx,类中提供两个方法:

getXxx(),用来获取属性xxx

setXxx(),用来修改属性xxx

后缀是将成员变量名字的首字母大写的字符序列。

(2)对于boolean类型的成员变量,即布尔逻辑类型的属性,允许使用“is”代替上面的“get”和“set”。

(3)类中声明的方法的访问属性都必须是public的。

(4)类中需提供public、无参数的构造方法。

下面是一个创建简单bean的Java类,Circle.java

2、创建与使用bean

使用JSP动作标记useBean来加载使用bean,useBean标记的语法格式

<jsp:useBean id="bean的名字" class="创建bean的Java类" scope="bean的有效范围" />或

<jsp:useBean id="bean的名字" class="创建bean的Java类" scope="bean的有效范围"></jsp:useBean>

例:JavaBean应用示例bean-example1.jsp

发布后,去测试


获取和修改bean的属性

当使用useBean获取到一个bean后,在Java程序片中这个bean就可以调用方法产生行为,比如修改属性、使用类中的方法等。

获取或修改bean的属性还可以使用动作标记getProperty、setProperty。

在JSP页面使用getProperty、setProperty标记获取或修改属性xxx时,必须保证bean有相应的getXxx和setXxx方法,而在程序片中直接用bean调用方法就不需要方法命名遵守getXxx和setXxx规则。

1、getProperty动作标记

使用该标记可以获得bean的属性值,并将这个值用字符串的形式发送给用户的浏览器,使用getProperty动作标记之前,必须使用useBean动作标记获得相应的bean。

格式:<jsp:getProperty name="bean的id的名字" property="bean的属性">

其中name取值是bean的id的名字,用来指定要获取哪个bean的属性的值;property取值是该bean的一个属性的名字。该指令相当于Java表达式<%=bean.getXxx() %>。

2、setProperty动作标记

使用setProperty动作标记可以设置bean的属性值,在使用之前,必须使用useBean标记得到一个相应的bean。

setProperty动作标记可以通过两种方式设置bean属性的值。

(1)将bean属性的值设置为一个表达式的值或字符串

(1.1)将bean属性的值设置为一个表达式的值的语法格式:

<jsp:setProperty="bean的id的名字" property="bean的属性" value="<%=expression %>" />

(1.2)将bena属性的值设置为一个字符串语法格式

<jsp:setProperty name="bean的id的名字" property="bean的属性" value=字符串/>

例:编写一个描述学生的Javabean类Student.java,在一个JSP页面bean-example2.jsp中获取它的一个实例对象bean,并在JSP页面中使用动作标记设置、获取该bean的属性值。

发布后,测试

(2)通过HTTP表单的参数的值来设置bean的相应属性的值

(2.1)用HTTP表单的所有参数的值设置bean相对应的属性的值

语法格式:<jsp:setProperty  name= "bean的id的名字"  property="*" />

系统会自动根据名字进行匹配对应,但要求bean属性的名字必须在表单中有名称相同的参数名字相对应,JSP引擎会自动将参数的字符串转换为bean相对应的属性的值。

(2.2)用HTTP表单的某个参数的值设置bean的某个属性的值

语法格式:<jsp:setProperty  name= “bean的id的名字”  property=“bean属性名”  param= “表单中的参数名” />

这种设置bean属性值的方法,不要求property给出的bean属性的名字和param给出的参数名一致,即不要求bean属性的名字必须和表单中某个参数名字相同。

例:使用Goods类来创建bean,JSP页面获取的bean的id是iPhone,bean的scope是request,JSP页面bean-exa.jsp和bean-exb.jsp都是通过表单来指定iPhone的属性值。

发布后,测试


应用

JSP与bean结合的简单例子