1 JavaBeans
JavaBeans在1996年被Sun公司提出,并定义为 A JavaBean is reusable, platform independent component that can be manipulated visually in a builder tool.
JavaBeans是一类符合一定编写规范(满足某些约定)的可被作为重用组件的Java类。
JavaBeans 是可重用组件,通过将不同的类(Object)封装到一个类(single Object)中,这个类被称为一个 Bean。
对于一个其方法命名、构造及行为必须符合以下约定的Java类,称为一个bean:
- 所有属性为
private
- 这个类必须有一个公共的缺省构造函数(即无参数的构造函数)
- 这个类的属性(property)可能使用
set方法 和 get方法来访问(或is方法,用于访问布尔型属性)
- 这个类的属性可具有只读、只写或可读可写的状态
- 这个类是可序列化的(实现了
serializable接口)
- 这个类可以将很多类封装到自己内部
例子
GUI 组件(Component) 均是理想的JavaBeans,即所有的Swing和AWT类均是JavaBeans。
在GUI 组件中:
- 属性(Properties):
JavaBeans的属性是一组被命名的字段,可以包括颜色(color)、标签(label)、字体(font)、字体大小(font size)、显示模式(display size),可用于描述GUI组件的外观、行为和状态
- 方法(Methods):
JavaBeans的方法与一般Java方法相同。所有的属性都通过方法来读取和修改
- 事件(Event):
JavaBeans的事件与 SWING/AWT中的事件处理(event handling)相同
- 持久化(persistence):实现了
Serializable接口使得每个JavaBeans都可以完成持久化存储
当然,我们也可以自己编写JavaBeans。
PersonBean.java
public class PersonBean implements java.io.Serializable {
/**
* name 属性(注意大小写)
*/
private String name = null;
private boolean deceased = false;
/** 无参构造器(没有参数) */
public PersonBean() {
}
/**
* name 属性的Getter方法
*/
public String getName() {
return name;
}
/**
* name 属性的Setter方法
* @param value
*/
public void setName(final String value) {
name = value;
}
/**
* deceased 属性的Getter方法
* 布尔型属性的Getter方法的不同形式(这里使用了is而非get)
*/
public boolean isDeceased() {
return deceased;
}
/**
* deceased 属性的Setter方法
* @param value
*/
public void setDeceased(final boolean value) {
deceased = value;
}
}
TestPersonBean.java
import player.PersonBean;
/**
* <code>TestPersonBean</code>类
*/
public class TestPersonBean {
/**
* PersonBean 类测试方法的main函数
* @param ARGS
*/
public static void main(String[] args) {
PersonBean person = new PersonBean();
person.setName("张三");
person.setDeceased(false);
// 输出: "张三[活着]"
System.out.print(person.getName());
System.out.println(person.isDeceased() ? " [已故]" : " [活着]");
}
}
JSP中访问JavaBeans
JavaBeans可以被使用在JSP中,即在Servlet(相当于Controller)中根据用户通过HTTP请求传递过来的参数构造一个Beans实例(通过调用Beans实例的各种setter方法),并存储到 HttpSession中的。
...