Bean

Bean

描述Java的軟件組件模型
EJB是Enterprise Java Bean的縮寫,一個Bean扮演着應用程序素材的角色。[1]它包含有一個functional interface,一個life-cycle interface,以及一個實做它所支援的商業方法的類别。對于程序員來說,最好的一點就是JavaBean可以實現代碼的重複利用,另外對于程序的易維護性等等也有很重大的意義。
  • 中文名:
  • 外文名:Enterprise Java Bean
  • 定義:描述Java的軟件組件模型
  • 縮寫:Bean
  • 類型:應用程序素材的角色
  • 目的:将可以重複使用的軟件代碼打包
  • 應用範圍:應用于服務器的部件

定義

JavaBean是描述Java的軟件組件模型,有點類似于Microsoft的COM組件概念。在Java模型中,通過JavaBean可以無限擴充Java程序的功能,通過JavaBean的組合可以快速的生成新的應用程序。對于程序員來說,最好的一點就是JavaBean可以實現代碼的重複利用,另外對于程序的易維護性等等也有很重大的意義。

比如說一個購物車程序,要實現購物車中添加一件商品這樣的功能,就可以寫一個購物車操作的JavaBean,建立一個public的AddItem成員方法,前台Jsp文件裡面直接調用這個方法來實現。如果後來又考慮添加商品的時候需要判斷庫存是否有貨物,沒有貨物不得購買,在這個時候我們就可以直接修改JavaBean的AddItem方法,加入處理語句來實現,這樣就完全不用修改前台jsp程序了。

一個簡單的JavaBean

FirstJavaBean.java

importjava.io.*;

public class FirstJavaBean

private String FirstProperty=new String("");

public FirstJavaBean

public String getFirstProperty(){return FirstProperty;}

public void setFirstProperty(String value){FirstProperty=value;}

public static void main(String[] args)

{System.out.println("My First JavaBean!");

如果運行這個程序,就會出現下面的結果:

My First JavaBean!

這是一個很典型的JavaBean的代表,簡單地解釋一下,FirstProperty是其中的一個屬性(Property),外部通過get/set方法可以對這個屬性進行操作,如果您寫過VB的class的話,對這個就再也熟悉不過了。Main方法是為了測試程序用的,寫JavaBean可以先不必加入到Jsp程序中調用,而直接用main方法來進行調試,調試好以後就可以在Jsp程序中調用了。

概述

用戶可以使用JavaBean将功能、處理、值、數據庫訪問和其他任何可以用java代碼創造的對象進行打包,并且其他的開發者可以通過内部的JSP頁面、Servlet、其他JavaBean、applet程序或者應用來使用這些對象。用戶可以認為JavaBean提供了一種随時随地的複制和粘貼的功能,而不用關心任何改變。

發展

最初,JavaBean的目的是為了将可以重複使用的軟件代碼打包标準。特别是用與幫助廠家開發在綜合開發環境(IDE)下使用的java軟件部件。這些包括如Grid控件,用戶可以将該部件拖放到開發環境中。從此,JavaBean就可以擴展為一個java web應用的标準部件,并且JavaBean部件框架已經擴展為企業版的Bean(EJB)。

設計注意事項

實際應用中,在表現對象或者處理前擴展JavaBean的設計非常有用。通常認為如果提供信息,web開發者将在功能上滿足用戶對JavaBean的需求。例如:HTML中顯示敏感的數據時,用戶可以屏蔽的條目,如密碼、電話号碼等。

良好規劃設計的JavaBean是值得信賴的。

Java中的null不同于SQL中的null

看這樣一道測試程序:

public class NullTest

{

public static void main(String[] args)

{

int I=0;

//int I=null;//not a valid initialization

String str=null;

String strZeroOutValue=“”;

StringBuffer sb=new StringBuffer(“Null test: String initialized as null=“);

sb.append(str);

sb.append(“n String representing a Zero Out Value:”);

sb.append(strZeroOutValue);

System.out.println(sb.toString());

}

}

這個程序将産生下面的結果:

Null test: String initialized as null=null

String representing a Zero Out Value:

在JavaBean中,我們将I變量聲明為一個int,我們必須處理與該變量相關的值,因為I默認的沒有值,int類型無法初始化為null, 如果int值沒有進行明确的初始化,編譯器将提示錯誤。

執行NullTest程序,将驗證在文本中空字符串是空值的替代,用于顯示SQL的插入和更新。如果我們需要删除一些信息,通過删除表單區域的文本,需要将數據庫發送長度為0的字符串。

盡管大多數數據庫将空字符串作為空值進行操作,如果我們使用的數據庫不支持處理空字符串的話,我們必須寫入附加的java代碼,來創建自己的SQL插入聲明。

例如:

if(test.length==0)

{

sb.append(“null”);

}

else

{

sb.append(test);

}

範圍

JavaBean的範圍。Scope是一個具有生命時間的變量。

存在下面四種範圍:頁面、請求、對話、應用。

對話範圍:

對話範圍的JavaBean主要應用與跨多個頁面和時間段:例如填充用戶信息。添加信息并且接受回饋,保存用戶執行頁面的軌迹。對話範圍JavaBean保留一些和用戶對話ID相關的信息。這些信息來自臨時的對話cookie,并在當用戶關閉浏覽器時,這個cookie将從客戶端和服務器删除。

頁面/請求範圍:

頁面和請求範圍的JavaBean有時類似表單的bean,這是因為他們大都用于處理表單。表單需要很長的時間來處理用戶的輸入,通常情況下用于頁面接受HTTP/POST或者GET請求。另外頁面和請求範圍的bean可以用于減少大型站點服務器上的負載,如果使用對話bean,耽擱的處理就可能會消耗掉很多資源。

應用:

應用範圍通常應用于服務器的部件,例如JDBC連接池、應用監視、擁護計數和其他參與用戶行為的類。

在Bean中限制HTML的産生:

理論上,JavaBean将不會産生任何HTML,因為這是jsp層負責的工作;然而,為了動态消息提供一些預先準備的格式是非常有用的。産生的HTML将被标注的JavaBean方法返回。

這裡有一些非常重要的事情:

1.不要試圖在JavaBean返回的HTML中放置任何字體尺寸。

并不是所有的浏覽器都相同。很多浏覽器無法處理完整的字體尺寸。

2.不要試圖在JavaBean返回的HTML中放置任何腳本或者DHTML。

向頁面直接輸出腳本或者DHTML相當于自我毀滅,因為某些浏覽器版本在處理不正确的腳本時會崩潰(非常少但是有)。如果用戶的JavaBean在運行時是動态的推出複雜的HTML語言,用戶将陷入調試的噩夢。另外,複雜的HTML将限制JavaBean的壽命和靈活性。

3.不要提供任何的選擇。

如果用戶使用不同的系統浏覽頁面,可以提供一種可以替換的方法。

區别

Java Bean是可複用的組件,對Java Bean并沒有嚴格的規範,理論上講,任何一個Java類都可以是一個Bean。但通常情況下,由于Java Bean是被容器所創建(如Tomcat)的,所以Java Bean應具有一個無參的構造器,另外,通常Java Bean還要實現Serializable接口用于實現Bean的持久性。Java Bean實際上相當于微軟COM模型中的本地進程内COM組件,它是不能被跨進程訪問的。Enterprise Java Bean相當于DCOM,即分布式組件。它是基于Java的遠程方法調用(RMI)技術的,所以EJB可以被遠程訪問(跨進程、跨計算機)。但EJB必須被部署在諸如Websphere、WebLogic這樣的容器中,EJB客戶從不直接訪問真正的EJB組件,而是通過其容器訪問。EJB容器是EJB組件的代理,EJB組件由容器所創建和管理。客戶通過容器來訪問真正的EJB組件。

相關詞條

相關搜索

其它詞條