`
i_am_birdman
  • 浏览: 275340 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

JSP使用JavaBean之JavaBean的概念

阅读更多

 JavaBean的基本概念[/size]
      JSP最强有力的一个方面就是能够使用JavaBean组件体系。JavaBean往往封装了程序的页面逻辑,它是可重用的组件。通过使用JavaBean,可以减少在JSP中脚本代码的使用,这样使得JSP易于维护,易于被非编程人员接受。

      JavaBean体系结构是第一个全面地基于组件的标准模型之一。JavaBean是描述Java的软件组件模型,有点类似于Microsoft的COM组件概念。JavaBean组件是Java类,这些类遵循一个接口格式,以便于使方法命名、底层行为及继承或实现的行为能够把类看做标准的JavaBeans组件进行构造。

     JavaBean具有以下特性:

  • 可以实现代码的重复利用。
  • 易维护,易使用,易编写
  • 可以在支持Java的任何平台上工作,而不需要重新编译
  • 可以在内部网内或者网络之间进行传输
  • 可以以其他部件的模式进行工作。










JavaBean传统的应用在于可视化领域。如AWT(窗口抽象工具集)下的应用。现在,JavaBean更多的应用在于不可视化领域,它在服务器端应用方面表现了越来越强的生命力。不可视化的JavaBean和可视化JavaBean同样使用属性和事件。不可视化的JavaBean在JSP程序中常用来封装事务逻辑、数据库操作等,可以很好地实现业务逻辑和前台程序的分离,使得系统具有更好的健壮性和灵活性。

  注意:JavaBean组件和企业级JavaBean(Enterprise JavaBean,EJB)组件的概念是完全不同的。EJB是J2EE的核心技术,它为开发服务器端应用程序组件提供了一个模型,利用这个模型来创建可移植与分布式企业应用程序服务器或组件。Enterprise JavaBean是一个用来创建分布式、服务器端及基于Java的企业应用程序组件的功能强大的组件模型。


JavaBean的属性

   属性是Bean组件内部状态的抽象表示。JavaBean的属性可以分为以下4类:

  • Simple(简单的)
  • Indexed(索引的)
  • Bound(绑定的)
  • Constrained(约束的)










   1.Simple(简单的)

          一个简单属性表示一个伴随有get/set方法的变量,它依赖于标准命名约定来定义getter方法和setter方法

   它的使用语法如下:

   public void set(value);

   public get();

   public boolean is();

对于Boolean类型的属性,除了可以使用getter方法外,还可以使用isXXX方法来获得这个属性

例如,对于“userName”属性,假如这个属性的类型是String,我们可以采用下面的方法:

  public void setUserName(String value);

  public String getuserName();

可以设置的属性是读写、只读或者只写。getter方法和setter方法可以使之具有读写属性;

getter方法将允许你指具有读属性;setter方法将允许你只具有写属性。


例如:

Java代码 复制代码
  1. public class SimpleBean{    
  2.   private String type;    
  3.   private Boolean debug=false;    
  4.   
  5.   public String getType(){    
  6.      return this.type;    
  7.       }    
  8.   public void setType(String type){    
  9.       this.type=type;    
  10.      }    
  11.   public boolean isDebug(){    
  12.       return this.debug;    
  13.      }    
  14.    public void setDebug(boolean debug){    
  15.        this.debug=debug;    
  16.        }    
  17.  }   
  public class SimpleBean{ 
    private String type; 
    private Boolean debug=false; 
  
    public String getType(){ 
       return this.type; 
        } 
    public void setType(String type){ 
        this.type=type; 
       } 
    public boolean isDebug(){ 
        return this.debug; 
       } 
     public void setDebug(boolean debug){ 
         this.debug=debug; 
         } 
   } 



在上面的代码中,由于debug的类型是Boolean,那么可以使用isDebug方法来获得这个属性。在这里isDebug和getDebug是一样的。它们之间可以进行内部转换。


2.Indexed(索引的)

  一个indexed索引属性表示一个数组值,同上所述的Simple简单属性一样,可以使用get/set方法取得数组中的值。

   它的使用语法如下:

Java代码 复制代码
  1. public void set(int index,value);    
  2.  public void set(value);    
  3.  public get();    
  4.  public get();    
  5.  publicget(int index);   
 public void set(int index,value); 
  public void set(value); 
  public get(); 
  public get(); 
  publicget(int index); 



例如:

Java代码 复制代码
  1.      
  2. public class IndexBean{    
  3.    private String[] type=new String[]{"jsp","ejb","servlet","javamail","jca";,"jdbc"};    
  4.   
  5. public String getType(){    
  6.    return this.type;    
  7.    }    
  8.   
  9. public void setType(String[] type){    
  10.   this.type=type;    
  11.    }    
  12.      
  13. public void setType(int index,String value){    
  14.   type[index]=value;    
  15. }    
  16.   public String getType(int index){    
  17.   return type[index]    
  18.   }    
  19.    }   
  
public class IndexBean{ 
   private String[] type=new String[]{"jsp","ejb","servlet","javamail","jca";,"jdbc"}; 

public String getType(){ 
   return this.type; 
   } 

public void setType(String[] type){ 
  this.type=type; 
   } 
  
public void setType(int index,String value){ 
  type[index]=value; 
} 
  public String getType(int index){ 
  return type[index] 
  } 
   } 



有了以上的Bean,我们就可以这样使用它了:

Java代码 复制代码
  1.     
  2. setType(4,"JavaBean");    
  3. String type=getType(5);    
  4. String[]s=getType();   
 
setType(4,"JavaBean"); 
String type=getType(5); 
String[]s=getType(); 




3. Bound(绑定的)
  绑定属性提供一种机制,即通知监听器一个JavaBean组件的属性发生了改变。监听器实现了PropertyChangeListener接口并接收由JavaBean组件产生的PropertyChangeEvent对象。PropertyChangeEvent对象包括一个属性名字、旧的属性值,以及每一个监听器可能要访问的新属性值。
   JavaBean实现了addPropertyChangeListener()和removePropertyChangeListener()方法,以便加入和删除属性变化监听器。PropertyChangeSupport.firePropertyChange()方法可以被使用,并传递属性姓名、旧值及新值等信息。
  这些属性在JavaBean图形编程中大量使用,而我们的目的是怎么在JSP中使用JavaBean。
4. Constrained(约束的)
  约束属性和绑定属性类似,但是属性值的变化首先要被所有的监听器验证之后,值的变化才能由JavaBean组件发生作用。一个JavaBean的约束属性是指当这个属性的值要发生变化时,与这个属性已经建立了某种连接的其他Java对象可否决属性值的改变。任何一个监听器都可以否决属性变化,JavaBean组件同意不使属性变化才能生效。
   监听器实现了VetoableChangeListener接口,并接收由JavaBean组件产生的PropertyChangeEvent对象。JavaBean组件可以使用VetoableChangeSupport辅助程序类激活由监听器接收的实际事件。
  使用一个JavaBean组件实例的引用构造VetoableChangeSupport对象,JavaBean实现了用addVetoableChangeLister()方法和removeVetoableChangeLister()方法加入或者删除可否决属性变化监听器。VetoableChangeSupport.fireVetoableChange()方法可以用来传递属性的名字、旧属性值和新的属性值等信息。
和绑定的属性一样,这里只介绍它的概念,在JSP开发中很少使用这种属性

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics