当前位置 博文首页 > 程序员springmeng:Javaweb学习总结(四):JavaBean组件技术

    程序员springmeng:Javaweb学习总结(四):JavaBean组件技术

    作者:[db:作者] 时间:2021-08-10 16:15

    JavaBean的任务就是:?Write?once,?run?anywhere,?reuse?everywhere”,即“一次性编写,任何地方执行,任何地方重用”。这个任何实际上就是要解决困扰软件工业的日益增加的复杂性,提供一个简单的、紧凑的和优秀的问题解决方案。JavaBean是为了减少重复的代码。

    ?

    JavaBean可分为两种:一种是有用户界面(UIUser?Interface)的JavaBean;还有一种是没有用户界面,主要负责处理事务(如数据运算,操纵数据库)的JavaBeanJSP通常访问的是后一种JavaBean

    ?

    JavaBean的主要作用:封装业务逻辑(功能实现),数据库操作(数据库处理、连接数据库)等。

    ?

    从基本上说,JavaBean可以看成是一个黑盒子,即只需要知道其功能而不必管其内部结构的软件设备。黑盒子只介绍和定义其外部特征和与其他部分的接口,如按钮、窗口、颜色、形状、句柄等。

    ?

    一个JavaBean3部分组成:属性、方法、事件。

    1getxxx:为了获得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()方法,以便添加和取消属性变化的监听器。

    ? ? ?注意:由于限制属性使用了错误处理,编程的时候要特别注意异常的处理方式。?

    ? ? ??


    cs