什么是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/
從Java語言的角度來看,JavaBean是一個純綷的Java類別,它遵守一些規則與命名方式,例如它是一個公開
的類別,具有公開的setter與getter方法,支援事件處理等等,JavaBean是一個可重用的元件,可用於設計
使用者介面元件,或是運用於JSP網頁中邏輯處理與資料攜帶。
對於動態網頁來說,如果它又要負責網頁內容的生成,又要負責資料的處理與保存,最後常導致的結果就是頁面
呈現的部份與程式的邏輯處理,以及資料物件的處理等混合在一起,對於必須相互合作的網頁設計人員與
程式設計人員來說都是一種困擾,JavaBean的作用之一,就是希望將程式的邏輯處理與呈現部份分開,
對於JSP的設計人員來說,應儘量利用JavaBean等技術(也就是還有其它的技術)來分離程式與網頁的呈現。
JavaBean的撰寫就如一般的Java程式,我們先撰寫一個簡單的Java類,其作用為尋找兩個數的最大公因數:
注意在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>標籤是用來呼叫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()方法取得值。
我們直接在網址列上發送以下的訊息即可求得最大公因數:
所傳回的內容如下:
如上所示的,使用JavaBean,我們可以將部份的程式邏輯移至JavaBean中,而不用在JSP網頁中直接撰寫程式
邏輯,只要在JSP網頁中使用<jsp:useBean>、<jsp:setProperty>與<jsp:getProperty>等標籤,標籤的
使用在HTML網頁中比較直觀,不會帶有太多的程式邏輯部份,可以實現「部份的」視圖與邏輯分離的目的
(僅靠JavaBean要達到完全的分離仍有困難)。
要注意的是,每當您的JavaBean程式內容改變並重新編譯後,Container不一定會知道JavaBean的內容已經
改變,也就不會重新載入改變後新的類別,這是使用JavaBean的缺點之一,解決的方法就是重新啟動
Container,讓Container重新載入改變後的JavaBean。
其他参考:
http://en.wikibooks.org/wiki/Java_Programming/JavaBeans
http://journals.ecs.soton.ac.uk/java/tutorial/beans/whatis/
資料來源: | Servlet/JSP 討論區 |
作者: | 良葛格 |
的類別,具有公開的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。
相关文章推荐
- Java 加密解密
- java中base64
- java中的多线程编程
- java 调用dll之jni(1)
- javascricpt 中Array数组的(last)indexOf(searching[,(startForm)]) 中startForm的详解
- Java与Java2的区别
- java通过反射调用不同参数的方法
- [置顶] 我的设计模式学习笔记------>Java设计模式总概况
- Java2平台J2SE、J2EE、J2ME三大版本的区别
- Java中Split函数的用法技巧
- 对Spring.Net的AOP一些思考及应用
- eclipse 安装软件
- 常用的Struts 2.0的标志(Tag)介绍
- JDK 1.5 1.6 1.7特性
- 对Spring.Net的AOP一些思考及应用
- JAVA发送邮件工具类
- 关于JAVA的守护进程
- java异常处理
- Eclipse使用技巧及快捷键大全(精品集合)
- java中如何实现邮件的发送包括网页文件的发送