JavaBean的定义:根据Sun的JavaBean规范,一个bean就是一个可重用的软件构件、并能够在开发工具中可视化的操作。
创建JavaBean
JavaBean规范没有要求一个JavaBean类都必须有默认构造函数,但是大多数开发工具都有这样的要求,所以这成为了一个事实上的标准。所以,如果一个Java类要成为JavaBean,就需要提供一个默认构造函数。
JavaBean通过提供get/set方法来读取或者设置属性。
JavaBean通常需要支持序列化功能。一般是实现Serializable或者Externalizable接口。请参见序列化一节。
通过NetBeans创建JavaBean,其实和创建一个Java类没多少区别,首先创建一个Java的项目,可以是任意的项目,这里我选择创建Java Class Library。然后添加一个Java类Person2,包名称为freebird。添加一下get/set方法以支持name,email,address和telephone属性,并且实现Externalizable接口。实现代码如下:
/*
* Person2.java
*
* Created on 2007-9-19, 11:24:53
*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package freebird;
import java.io.*;
/**
*
* @author chenshu
*/
public class Person2 implements Externalizable
{
public Person2()
{
}
public Person2(String name,String email,String address,String telephone)
{
this.name=name;
this.email=email;
this.address=address;
this.telephone=telephone;
}
public String getName()
{
return name;
}
public void setName(String name)
{
this.name=name;
}
public String getEmail()
{
return email;
}
public void setEmail(String email)
{
this.email=email;
}
public String getAddress()
{
return address;
}
public void setAddress(String address)
{
this.address=address;
}
public String getTelephone()
{
return telephone;
}
public void setTelephone(String telephone)
{
this.telephone=telephone;
}
public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException
{
name=(String)in.readObject();
email=(String)in.readObject();
address=(String)in.readObject();
telephone=(String)in.readObject();
}
public void writeExternal(ObjectOutput out) throws IOException
{
out.writeObject(name);
out.writeObject(email);
out.writeObject(address);
out.writeObject(telephone);
}
private String name;
private String email;
private String address;
private String telephone;
}
NetBeans会根据当前的用户帐号(我现在是chenshu)和创建类的日期生成类的注释。编译该工程,会看到下面的话:
Building jar: D:/technology/Java/Project/PersonBean2/dist/PersonBean2.jar
PersionBean2已经被打包成.jar文件。里面包含了一个manifest清单文件和Persion2类的二进制码。如果我们的Persion2类还引用到了其它的非jdk类,工程会创建lib目录,里面存放了所有依赖的外部jar文件。这个也需要一起发布给客户。
JSP中调用JavaBean
使用JSP标准行为
首先,我们要创建JavaBean对象:
<jsp:useBean id=”cartoon” class=”com.ora.jsp.beans.motd.CartoonBean” />
该行创建了CartoonBean对象,并用字符串cartoon作为该对象的id,其实就是变量名。
然后,我们在需要使用该对象的地方使用<jsp:getProperty>和<jsp:setProperty>标准行为。比如:<img src=”images/<jsp:getProperty name=”cartoon” property=”fileName” />”>
这里的name=”cartoon”就是使用了变量名,或者称为id。
property=”fileName”代表使用CartoonBean对象的属性fileName。
加入属性fileName的值为”mouse.jpg”,那么最后生成的html代码应该如下:
<img src=”images/mouse.jpg”>。
${...}是EL的语法形式。上面的调用代码可以改写成:
<img src=images/<c:out value=”${cartoon.fileName}” />”>
推荐使用
EL
调用
JavaBean
。因为使用更加的方便,除非考虑到与
JSP1.1
规范兼容的情况。