您的位置:首页 > 编程语言 > Java开发

什么是JavaBean

2013-10-15 19:22 190 查看
转自:http://www.javaworld.com.tw/confluence/pages/viewpage.action?pageId=978

其他参考:

http://en.wikibooks.org/wiki/Java_Programming/JavaBeans

http://journals.ecs.soton.ac.uk/java/tutorial/beans/whatis/

資料來源:Servlet/JSP 討論區

作者:良葛格
從Java語言的角度來看,JavaBean是一個純綷的Java類別,它遵守一些規則與命名方式,例如它是一個公開

的類別,具有公開的setter與getter方法,支援事件處理等等,JavaBean是一個可重用的元件,可用於設計

使用者介面元件,或是運用於JSP網頁中邏輯處理與資料攜帶。

對於動態網頁來說,如果它又要負責網頁內容的生成,又要負責資料的處理與保存,最後常導致的結果就是頁面

呈現的部份與程式的邏輯處理,以及資料物件的處理等混合在一起,對於必須相互合作的網頁設計人員與

程式設計人員來說都是一種困擾,JavaBean的作用之一,就是希望將程式的邏輯處理與呈現部份分開,

對於JSP的設計人員來說,應儘量利用JavaBean等技術(也就是還有其它的技術)來分離程式與網頁的呈現。

JavaBean的撰寫就如一般的Java程式,我們先撰寫一個簡單的Java類,其作用為尋找兩個數的最大公因數:

package beantools.math;
public class FindGCD
{
private int m, n;
public void setM(int m)
{
this.m = m;
}
public void setN(int n)
{
this.n = n;
}
public int getGCD()
{
int r = 0;
while(n != 0)
{
r = m % n;
m = n;
n = r;
}
return m;
}
}


注意在JSP 2.0之後,JavaBean的類別一定要有package加以管理;上面這個類別所擁有的方法都是公開的,

而且使用setXXX()與getXXX()的方式來命名,將這個類別編譯完成後,您將類別*.class放置於Web應用程式

的WEB-INF/classes/資料夾中,注意由於我們設定package為beantools.math,所以最後您的*.class

應該路徑應該是WEB-INF/classes/beantools/math/FindGCD.class,接下來我們在JSP網頁中將這個類別

當作JavaBean來使用,我們撰寫以下這個JSP網頁程式:

<jsp:useBean id="gcd" class="beantools.math.FindGCD" />
<jsp:setProperty name="gcd" property="*" />
<%= request.getParameter("m") %> 與 <%= request.getParameter("n") %>
最大公因數:<jsp:getProperty name="gcd" property="GCD" />


<jsp:useBean>標籤是用來呼叫JavaBean的方法,id用於指定JavaBean實例的參考名稱,它實際將轉換為

Servlet中的一個物件參考名稱,class用以指定您的JavaBean將實例化哪一個類別,在執行JSP網頁時,

它會檢查JavaBean的實例是否已經存在,如果不存在,則實例化一個JavaBean。

<jsp:setProperty>標籤用於給JavaBean設定屬性值,name用於指定您要使用哪一個參考名稱所參考至的

JavaBean實例;在屬性設定時我們使用了introspection機制,在property設定"*",表示將自動尋找

request中符合JavaBean中setter名稱的參數值,即如果request的參數名稱若符合setXXX()中XXX名稱,

則將request中對應的值設定給setXXX()。

<jsp:getProperty>則用來取得JavaBean所攜帶的屬性值,name用於指定您要使用哪一個參考名稱所參考至

的JavaBean實例,在property中指定的是要哪一個屬性值,即如果指定為XXX,則使用getXXX()方法取得值。

我們直接在網址列上發送以下的訊息即可求得最大公因數:

http://localhost:8080/myjsp/javabeandemo.jsp?m=100&n=14


所傳回的內容如下:

100 與 14 最大公因數:2


如上所示的,使用JavaBean,我們可以將部份的程式邏輯移至JavaBean中,而不用在JSP網頁中直接撰寫程式

邏輯,只要在JSP網頁中使用<jsp:useBean>、<jsp:setProperty>與<jsp:getProperty>等標籤,標籤的

使用在HTML網頁中比較直觀,不會帶有太多的程式邏輯部份,可以實現「部份的」視圖與邏輯分離的目的

(僅靠JavaBean要達到完全的分離仍有困難)。

要注意的是,每當您的JavaBean程式內容改變並重新編譯後,Container不一定會知道JavaBean的內容已經

改變,也就不會重新載入改變後新的類別,這是使用JavaBean的缺點之一,解決的方法就是重新啟動

Container,讓Container重新載入改變後的JavaBean。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: