JavaBean的任务就是: “Write once, run anywhere, reuse everywhere”,即“一次性编写,任何地方执行,任何地方重用”。这个任何实际上就是要解决困扰软件工业的日益增加的复杂性,提供一个简单的、紧凑的和优秀的问题解决方案。JavaBean是为了减少重复的代码。
JavaBean可分为两种:一种是有用户界面(UI,User Interface)的JavaBean;还有一种是没有用户界面,主要负责处理事务(如数据运算,操纵数据库)的JavaBean。JSP通常访问的是后一种JavaBean。
JavaBean的主要作用:封装业务逻辑(功能实现),数据库操作(数据库处理、连接数据库)等。
从基本上说,JavaBean可以看成是一个黑盒子,即只需要知道其功能而不必管其内部结构的软件设备。黑盒子只介绍和定义其外部特征和与其他部分的接口,如按钮、窗口、颜色、形状、句柄等。
一个JavaBean有3部分组成:属性、方法、事件。
(1)getxxx:为了获得xxx的属性;
setxxx:为了设置xxx的属性;
(2)对于boolean类型的成员变量,即布尔逻辑类型的属性,允许使用"is“
代替上面的"get"和"set"。
(3)类中方法的访问属性都必须是public的。
(4)类中如果有构造方法,那么这个构造方法也是public的并且没有参数。
JavaBean的实例:
</pre><pre name="code" class="html"><span style="font-size:18px;">import java.io.Serializable; public class JavaBeanDemo implements Serializable{ //实现了Serializable接口 JavaBeanDemo(){} //无参的构造方法 private int id; //私有属性Id private String name; //私有属性name public int getId(){ return Id; } public void setId(int id) { //set()方法 this.id = id; } public String getName(){ //get()方法 return name; } public void setName(String name) { this.name = name; } }</span>在JavaBean的设计中按照其属性的不同作用可以把该Bean分为4类,分别是简单属性设置(Simple)、索引属性设置(Indexed)、束缚属性设置(Bound)、限制属性设置(Constrained)。
简单属性:表示为一般数据类型的变量并且getXXX()和setXXX()方法是以属性来命名的。
public class Hello { Hello(){} //无参构造方法 private String name; //定义String类型的简单属性name private boolean info; public String getName() { //简单属性的getXxx()方法 return name; } public void setName(String name) { //简单属性的setXxx()方法 this.name = name; } public boolean isInfo() { //布尔类型的取值方法 return info; } public void setInfo(boolean info) { //布尔类型的setXxx方法 this.info = info; }索引属性:表示一个数组值或者一个集合,与Simple属性一样可以使用getXXX()和setXXX()方法来获取值,例如:
public int[] array=new int[8]; public int[] getArray() { //返回整个数组 return array; } public void setArray(int[] array) { //为整个数组赋值 this.array = array; } public void setArray(int index,int value) { //为数组中的某个元素赋值 this.array[index]=value; } public int getArray(int index){ //返回数组中的某个值 return array[index]; }
束缚属性:
束缚属性(Bound)也称为关联属性,它是当该种属性的值发生变化时,要通知其它的对象。每次属性值改变时,这种属性就触发一个PropertyChange事件(在Java程序中,事件也是一个对象)。事件中封装了属性名、属性的原值、属性变化后的新值。这种事件是传递到其它的Bean,至于接收事件的Bean应做什么动作由其自己定义。包含关联属性的Bean必须具有以下的功能:
(1)允许事件监听器注册和注销与其有关的属性修改事件;
(2)当修改一个关联属性时,可以在相关的监听器上触发属性修改事件。
利用java.beans.PropertyChangeSupport类创建出PropertyChangeSupport类的对象,从而可以用于管理注册的监听器列表和属性修改事件通知的发送。JavaBean还需要实现addPropertyChangeLinster()方法和removePropertyChangeLinster()方法,以便添加和取消属性变化的监听器。
限制属性 :
限制属性(constrained)是指当这个属性的值要发生变化时,与这个属性已建立了某种连接的其它外部Java对象可否决该属性值的改变(限制属性的监听者通过抛出PropertyVetoException来阻止该属性值的改变),Bean本身也可以否决该Bean属性值的改变。
一个限制属性有两种监听者:属性变化监听者和取消属性改变的监听者。取消属性改变的监听者在自己的对象代码中有相应的控制语句,在监听到有限制属性要发生变化时,在控制语句中判断是否应否决这个属性值的改变。
利用java.beans.VetoableChangeSupport类的fireVetoableChange()方法传递属性名称、改变前的值和改变后的值等信息。JavaBean还需要实现addVetoableChangeLinster()方法和removeVetoableChangeLinster()方法,以便添加和取消属性变化的监听器。
注意:由于限制属性使用了错误处理,编程的时候要特别注意异常的处理方式。