JavaBean 是一種JAVA語言寫成的可重用組件。爲寫成JavaBean,類必須是具體的和公共的,而且具備無參數的構造器。JavaBean 經過提供符合一致性設計模式的公共方法將內部域暴露成員屬性,set和get方法獲取。衆所周知,屬性名稱符合這種模式,其餘Java 類能夠經過自省機制(反射機制)發現和操做這些JavaBean 的屬性。java
用戶可使用JavaBean將功能、處理、值、數據庫訪問和其餘任何能夠用java代碼創造的對象進行打包,而且其餘的開發者能夠經過內部的JSP頁面、Servlet、其餘JavaBean、applet程序或者應用來使用這些對象。用戶能夠認爲JavaBean提供了一種隨時隨地的複製和粘貼的功能,而不用關心任何改變。
JavaBean可分爲兩種:一種是有用戶界面(UI,User Interface)的JavaBean;還有一種是沒有用戶界面,主要負責處理事務(如數據運算,操縱數據庫)的JavaBean。JSP一般訪問的是後一種JavaBean。
JavaBean是可複用的平臺獨立的軟件組件,開發者能夠在軟件構造器工具中對其直接進行可視化操做。
軟件構造器工具能夠是Web頁面構造器、可視化應用程序構造器、GUI設計構造器或服務器應用程序構造器。有時,構造器工具也能夠是一個包含了一些bean的複合文檔的文檔編輯器。
JavaBean能夠是簡單的GUI要素,如按鈕或滾動條;也能夠是複雜的可視化軟件組件,如數據庫視圖,有些JavaBean是沒有GUI表現形式的,但這些JavaBean仍然可使用應用程序構造器可視化地進行組合。
一個JavaBean和一個JavaApplet類似,是一個很是簡單的遵循某種嚴格協議的Java類。每一個JavaBean的功能均可能不同,但它們都必須支持如下特徵。
一個bean沒有必須繼承的特定的基類或接口。可視化的bean必須繼承的類是java.awt.Component,這樣它們才能添加到可視化容器中去,非可視化bean則不須要繼承這個類。有許多bean,不管是在應用程序構造器工具中,仍是在最後建立好的應用程序中,都具備很強的可視化特徵,但這並不是每一個bean必須的特徵。
在使用Java編程時,並非全部軟件模塊都須要轉換成bean。Bean比較適合於那些具備可視化操做和定製特性的軟件組件。
從基本上說,JavaBean能夠當作是一個黑盒子,即只須要知道其功能而沒必要管其內部結構的軟件設備。黑盒子只介紹和定義其外部特徵和與其餘部分的接口,如按鈕、窗口、顏色、形狀、句柄等。 經過將系統當作使用黑盒子關聯起來的通信網絡,咱們能夠忽略黑盒子內部的系統細節,從而有效地控制系統的總體性能。數據庫
一個JavaBean由3部分組成:
(1) 屬性(properties)
JavaBean提供了高層次的屬性概念,屬性在JavaBean中不僅是傳統的面向對象的概念裏的屬性,它同時還獲得了屬性讀取和屬性寫入的API的支持。屬性值能夠經過調用適當的bean方法進行。好比,可能bean有一個名字屬性,這個屬性的值可能須要調用String getName()方法讀取,而寫入屬性值可能要須要調用void setName(String str)的方法。
每一個JavaBean屬性一般都應該遵循簡單的方法命名規則,這樣應用程序構造器工具和最終用戶才能找到JavaBean提供的屬性,而後查詢或修改屬性值,對bean進行操做。JavaBean還能夠對屬性值的改變做出及時的反應。好比一個顯示當前時間的JavaBean,若是改變時鐘的時區屬性,則時鐘會當即重畫,顯示當前指定時區的時間。
(2) 方法(method)
JavaBean中的方法就是一般的Java方法,它能夠從其餘組件或在腳本環境中調用。默認狀況下,全部bean的公有方法均可以被外部調用,但bean通常只會引出其公有方法的一個子集。
因爲JavaBean自己是Java對象,調用這個對象的方法是與其交互做用的惟一途徑。JavaBean嚴格遵照面向對象的類設計邏輯,不讓外部世界訪問其任何字段(沒有public字段)。這樣,方法調用是接觸Bean的惟一途徑。
可是和普通類不一樣的是,對有些Bean來講,採用調用實例方法的低級機制並非操做和使用Bean的主要途徑。公開Bean方法在Bean操做中降爲輔助地位,由於兩個高級Bean特性--屬性和事件是與Bean交互做用的更好方式。
所以Bean能夠提供要讓客戶使用的public方法,但應當認識到,Bean設計人員但願看到絕大部分Bean的功能反映在屬性和事件中,而不是在人工調用和各個方法中。
(3) 事件(event)
Bean與其餘軟件組件交流信息的主要方式是發送和接受事件。咱們能夠將bean的事件支持功能看做是集成電路中的輸入輸出引腳:工程師將引腳鏈接在一塊兒組成系統,讓組件進行通信。有些引腳用於輸入,有些引腳用於輸出,至關於事件模型中的發送事件和接收事件。
事件爲JavaBean組件提供了一種發送通知給其餘組件的方法。在AWT事件模型中,一個事件源能夠註冊事件監聽器對象。當事件源檢測到發生了某種事件時,它將調用事件監聽器對象中的一個適當的事件處理方法來處理這個事件。
因而可知,JavaBean確實也是普通的Java對象,只不過它遵循了一些特別的約定而已。編程
JSP中使用javabean設計模式
JSP技術提供了三個關於JavaBean組件的動做元素,即JSP標籤,它們分別爲:服務器
<jsp:useBean>標籤:用於在JSP頁面中查找或實例化一個JavaBean組件。網絡
<jsp:setProperty>標籤:用於在JSP頁面中設置一個JavaBean組件的屬性。app
<jsp:getProperty>標籤:用於在JSP頁面中獲取一個JavaBean組件的屬性。jsp