3.1 JavaBean概述
3.1.1 JavaBean简介
JavaBean是一个Java组建模型,为Java类提供了一种标准格式,在JSP的开发中可以使用JavaBean减少重复代码,使整个JSP代码的开发更简洁。
1、JavaBean的产生背景
软件组件就是指可以进行独立分离、易于重复使用的软件部分。JavaBean就是使用Java语言开发的一个可重用的组件,也是一种独立于平台和程序的应用程序编程接口API。
2、JavaBean的基本概念
JavaBean实际上是一些类,这些类遵循一个接口格式,方便开发者的使用,相当于把类看做标准的java组件进行构造和应用。
JavaBean一般分为可视化组件和非可视化组件两种,前者可以是简单的GUI元素,也可以是复杂的元素,比如报表组件;后者没有GUI表现形式,用于封装业务逻辑、数据库操作等。
需要区别的是,虽然java本身就有重用的功能,但是和JavaBean有不同的地方。java没有管理可重用对象相互作用的规则和标准,我们必须具备良好的编程知识才可以直接对java重用代码进行操作,但是对于JavaBean,用户可以在应用程序构造器工具中使用各种JavaBean组件而无需编写代码。JavaBean同时使用多种组件而不考虑它们初始化情况的功能时对java的重要扩展。
3、JavaBean的属性、事件和方法
基本上可以把JavaBean当做一个黑盒模型,属性、事件和方法是他的三个组成部分。
(1)属性
JavaBean提供了更高层次的属性概念,不同于普通类中的成员属性的概念。它通过进一步的封装,对属性的读取和写入也采取了通用方法,也就是我们熟知的set、get方法。
JavaBean属性都有简单的命名规则,易于理解和调用。
(2)方法
JavaBean中的方法与普通类一样,可以从其他组件或脚本程序中调用。一般情况下JavaBean所有公用方法都必须可以被外部调用,当然,JavaBean本身也是一个java对象,通过调用这个对象的初始方法和相关公用方法是与其交互作用的唯一途径。此外,JavaBean严格遵守面向对象的类设计逻辑,通过private的私有化封装,不让外部直接访问它的成员属性,接触JavaBean的唯一途径就是上面所说的。
(3)事件
JavaBean与其他软件组件进行数据交互的主要手段是事件的发送和接收,这里的事件指的是为JavaBean组件提供一种发送通知给其他组件的方法。在AWT事件模型中,事件源通过注册,完成事件监听器对象的创建,当事件源检测到发生了某种事时,与他对应的事件监听器对象会选择一个恰当的事件处理方法进行处理。
3.1.2 JavaBean的特征
1)内省:使组件可以发表其支持的操作和属性的机制,也是支持在其他组件中发现这种机制的机制。
2)属性:在设计bean时可以改变的外观和行为特征。开发工具通过对bean进行内省获知并发布属性。
3)定制:bean通过发布属性可以使其在设计时被定制。
4)通信:bean之间通过事件互相通信。
5)持续:通过对象的持续化机制,可以存储和恢复bean的状态。
3.1.3 JavaBean的特征实现
(1)属性
bean的属性可以用于描述外观和行为特征,使用set和get方法进行设置和获取。
JavaBean API还支持索引属性,与java的数组非常相似,可以只访问特定元素,也可以访问整个数组。
与简单属性相对的是关联属性和限制属性,这两种属性在运行或设计时被修改后可以自动通知外部世界,或者有能力拒绝被设置为某个数值的属性。关联属性在属性改变时向其他beans和容器发送通知,产生一个PropertyChangeEvent事件,传递给所关联的注册了PropertyChangeListener的听众,可以通过addPropertyChangeListener(PropertyChangeListener l)和removePropertyChangeListener(PropertyChangeListener l)方法注册或注销多路广播事件听众。
限制属性是内部验证的,不合格会被拒绝,用户可以通过异常得知被拒绝的属性,用VetobleChangeListener接口验证改变,可以通过addVetobleChangeListener(VetobleChangeListener l)和removeVetobleChangeListener(VetobleChangeListener l)方法注册或注销该接口。
这两个属性都可以对单个属性的事件进行监听,只需要把add后面换成相应的name即可。
(2)内省和定制
JavaBeans伴随了两种java技术,一是Java反映API,是一组用于透视类文件和显示其中的属性和方法的类,另一种是Java串行化API,用于生成类的永久储存。这两种技术使得beans可以用建立工具探索和显示,并修改和存放起来供特定应用程序使用。
具体方法就是通过成对的get、set方法,此外,JavaBean还提供了显示的接口BeanInfo,用于显示bean的属性、事件、方法和各种全局信息。可以通过实现该接口定义自己的bean信息类。
public class myBeanInfo implements BeanInfo
接口提供了一系列访问bean信息的方法,开发者还可以提供BeabInfo类用于定义bean信息的专用描述文件。
(3)持续
JavaBean状态的持续可以通过Java对象的串行化机制自动保存,也可以由设计者通过定制其串行化控制bean对象的状态的保存。
(4)事件
如之前所介绍的,可以结合代码更好地进行理解。
3.1.4 创建一个JavaBean文件
创建一个JavaBean文件就是创建一个类,这个类需要符合下面的几个规则:
1)这个类的所有成员属性必须是私有的;
2)这些成员属性的读取和设置必须通过get和set方法实现;
3)构造函数不带任何参数。
举例:StaffInfo.java(如何建包可以参照上一篇博客,这里也可以不创建包直接创建java程序即可)
package cy;
public class StaffInfo{
private String name;
private int age;
public void setName(String name){
this.name = name;
}
public void setAge(int age){
this.age = age;
}
public String getName(){
return this.name;
}
public int getAge(){
return this.age;
}
public StaffInfo() {
name="Hedy";
age=19;
}
public static void main(String[] args) {
StaffInfo a=new StaffInfo();
System.out.println("信息为:");
System.out.println("姓名:"+a.getName());
System.out.println("年龄:"+a.getAge());
}
}
截图: