JavaBean在J2EE程序里的应用
JavaBean有点类似于Microsoft的COM组件概念。在Java模型中,通过JavaBean可以无限扩充Java程序的功能,通过JavaBean的组合可以快速的生成新的应用程序。
通常情况下,任何定义了默认构造方法(无参数)的Java类(或者在构造方法前加了@Inject注解)都是bean。任何JavaBean和EJB session bean都是,你不需要给他们添加任何特殊的代码或配置,只需要把他们打包在含有META-INF/beans.xml的包里,就可以把这些bean注入到他们的调用者之中了(打包是指jar,war或者EJB jar等)
可视化的JavaBean必须继承的类是java.awt.Component,这样他们才能添加到可视化容器里面去;非可视化的则不需要继承这个类。JavaBean比较适合那些具有可视化操作和订制特性的软件组织
简单来说,JavaBean必须有get/set方法,不能有main函数,并且如果有构造函数,则构造函数不能有参数。每个JavaBean有三个元素:属性,方法,事件.JavaBean使用这些元素和放置它的容器交互。
2. JavaBean的属性
JavaBean的属性与一般Java程序中所指的属性,或者说与所有面向对象的程序设计语言中对象的属性是一个概念,在程序中的具体体现就是类中的变量。在JavaBean设计中,按照属性的不同作用又细分为四类:Simple, Index, Bound与Constrained属性。在做WEB程序过程中,个人感觉simple属性最常用,其余三种我自己接触的比较少,所以只介绍前2种属性。
JSP中使用JavaBean的参考链接:http://www.cnblogs.com/allenzhaox/p/3223946.html
1 .Simple属性
一个简单属性表示一个伴随有一对get/set方法(C语言的过程或函数在Java程序中称为"方法")的变量。属性名与和该属性相关的get/set方法名对应。例如:如果有setX和getX方法,则暗指有一个名为"X"的属性。如果有一个方法名为isX,则通常暗指"X"是一个布尔属性(即X的值为true或false)。例如在下面这个程序中:
public class alden1 extends Canvas {
string ourString= "Hello"; //属性名为ourString,类型为字符串
public alden1(){ //alden1()是alden1的构造函数,与C++中构造函数的意义相同
setBackground(Color.red);
setForeground(Color.blue);
}
/* "set"属性*/
public void setOurString(String newString) {
ourString=newString;
}
/* "get"属性 */
public String getOurString() {
return ourString;
}
}
3.1.2 Indexed属性
一个Indexed属性表示一个数组值。使用与该属性对应的set/get方法可取得数组中的数值。该属性也可一次设置或取得整个数组的值。例:
public class alden2 extends Canvas {
int[] dataSet={1,2,3,4,5,6}; // dataSet是一个indexed属性
public alden2() {
setBackground(Color.red);
setForeground(Color.blue);
}
/* 设置整个数组 */
public void setDataSet(int[] x){
dataSet=x;
}
/* 设置数组中的单个元素值 */
public void setDataSet(int index, int x){
dataSet[index]=x;
}
/* 取得整个数组值 */
public int[] getDataSet(){
return dataSet;
}
/* 取得数组中的指定元素值 */
public int getDataSet(int x){
return dataSet[x];
}
}
3.1.3 Bound属性
一个Bound属性是指当该种属性的值发生变化时,要通知其它的对象。每次属性值改变时,这种属性就点火一个PropertyChange事件(在Java程序中,事件也是一个对象)。事件中封装了属性名、属性的原值、属性变化后的新值。这种事件是传递到其它的Bean,至于接收事件的Bean应做什么动作由其自己定义。
3.1.4 Constrained属性
一个JavaBean的constrained属性,是指当这个属性的值要发生变化时,与这个属性已建立了某种连接的其它Java对象可否决属性值的改变。constrained属性的监听者通过抛出PropertyVetoException来阻止该属性值 的改变。
最后总结一下JavaBean在web的感悟:
JavaBean一般用在控制层很普遍,控制一些页面的显示,数据的传输什么的。可能是JavaBean可以直接和JSP页面进行交互的缘由,所以在具体的代码上主要用在控制层。用在其他层的情况,比如服务层貌似也很普遍。(大牛求指点,这一点很模糊)。可能这个东西就是一个没有main函数的方法类,不要把它想成JavaBean就好了。
public class AdminServerManagerImpl implements AdminServerManager {
privateString msg ;
privateTeacherDao teacherDao ;
publicvoid saveTeacher(Teacher teacher) {
teacherDao.insert(teacher);
msg= "添加成功" ;
}
publicvoid updateTeacher(Teacher teacher) {
teacherDao.update(teacher);
}
public Teacher query(Integer teacherId) { //Teacher是一个实体类
returnteacherDao.query(teacherId) ;
}
publicTeacher queryNameAndPass(String teacherBianhao,
StringteacherPass) {
returnteacherDao.queryNameAndPass(teacherBianhao, teacherPass);
}
}
//目测貌似也可以算是JavaBean的应用