bean[描述Java的軟體組件模型]

bean[描述Java的軟體組件模型]
bean[描述Java的軟體組件模型]
更多義項 ▼ 收起列表 ▲

EJB是Enterprise Java Bean的縮寫,一個Bean扮演著應用程式素材的角色。它包含有一個functional interface,一個life-cycle interface,以及一個實現它所支援的商業方法的類別。

基本信息

定義

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是java類,屬於某些特定的解碼指導方針,並且擴展了適應性和範圍,允許用戶訪問內部的屬性和方法。通過這些,JavaBean類可以用於下列方法:

1. 在IDE中,JavaBean的功能允許套用開發者瀏覽其中的方法,即使JavaBean是被編譯的,並且無法利用原始的源檔案。

2. 在 Remote Method Invocation(RMI) 的分散式風格中,這項功能聽起來並不讓人興奮,但是在未來的包含企業版的JavaBean後,將改變這種情況。

3. 為了JavaBean的屬性值和狀態可以保存到磁碟上。

注意事項

實際套用中,在表現對象或者處理前擴展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的範圍在

<jsp:useBean scope=”….>標誌中右邊進行表示。將產生一個JavaBean的快捷參考。

說明:jsp伺服器引擎將剝離<jsp。。。。標記。並且在最終用戶的瀏覽器上無法顯示實際代碼。

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

對話範圍:

對話範圍的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組件。

相關詞條

相關搜尋

熱門詞條