Java Bean

 
 
       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规范兼容的情况。 
posted @ 2007-09-19 14:59  反正我信了  阅读(278)  评论(0编辑  收藏  举报