JavaBean知識、原理以及JavaBean的總結

原文:http://www.blogjava.net/flysky19/articles/88180.html

一、 javabean 是什麼?

Javabean 就是一個類,這個類就定義一系列 get<Name> 和 set<Name> 方法。 So simple !

Javabean 就是爲了和 jsp 頁面傳數據化簡交互過程而產生的。

自己的理解:

使用 javabean 和不用 javabean 的區別:

一個 javabean 就是爲 jsp 頁面上的元素一一開闢一個空間,然後根據需要賦值、讀值。而如果不用 javabean ,就直接使用 HttpServlet 的 request 對象:

只在 jsp 頁面間傳遞獲取數據:

String name=req.getParameter(“name”);

顯示數據: out.println(name);

存數據入 DB :在 jsp 中直接嵌入 Java 代碼,用 insert 語句存入。

 

感覺就像當年自己畢設做的 asp 代碼一樣。 .asp 頁面中一系列的 req.getParameter 代碼和嵌入一大堆的 sql 語句,代碼很亂,很難維護。

而使用 javabean 之後,優勢也就是 java 的優勢:組件技術,代碼重用,易於維護。(在 jsp 頁面中數據的顯示很清晰。)

 

具體 javabean 是什麼?有待查資料

解決:

1  http://www.itlearner.com/article/2004/551.shtml

軟件組件就是指可以進行獨立分離、易於重複使用的軟件部分。 JavaBean 就是一種基於 Java 平臺的軟件組件思想。

2 ) http://www.chinaitpower.com/A200507/2005-07-27/170233.html

JavaBean到底是個什麼東西

1.      JavaBean與EJB
(1)JavaBean與EJB規範在以下方面有共同的目標:通過標準的設計模式推廣Java程序代碼,提升開發過程和開發工具之間的重複運用性可攜性.但是這兩種規格的原始問題卻是爲了解決不同的問題.
定義於JavaBean組件模型中的標準規範,被設計來產生可重複運用的組件,而這些組件通常被用於IDE開發工具,而且通常是可視化組件,當然並不一定是可視化組件.
(2)EJB規範所定義的組件模弄,剛是用來開發服務端的Java程序,由於EJB可能執行在不同的服務器平臺上,包括無圖形的大型主機上,所以EJB無法使用類似AWT或SWING之類的圖形化程序庫.

2.      JavaBean與類庫的區別:
(1)並不是所有有用的模塊都必須轉化成Bean.Bean主要是能被用來可視化操作去完成一些效果.
(2)類庫是一個提供函數操作給編程者的一個有效操作,但是並不能從可視化操作中來獲益.
(3)舉個例子來說:提供JDBC數據庫訪問的API作爲一個類庫比作爲一個bean要好,因爲JDBC的核心是用一個可編程的API,並不是能夠直接展現於可視化操作.然而,寫一個數庫庫訪問Bean在JDBC的頂層還是有意義的.例如,你可以寫一個能定製的"Select"bean以助於用戶去組成一個查詢語句,並且程序運行時用JDBC去運行這個查詢語句,並顯示結果集.

3.      在可視化編程中,可以看出,組件是一段程序代碼,通過被存爲class內,關鍵在程序開發工具如何發現組件的屬性和事件.VB和Delphi都是通過某種機制來實現這點的,而Java則通過JavaBeans將可視化組件開發帶進了一個更高的境界,因爲一個Bean就是一個Class.針對以上的內容,JavaBean有如下的規則

(1)針對一個名爲xxx的屬性,你通常要寫兩個函數,getXxx()和setXxx().
(2)你可以用get/set方式來處理boolean,可以用is來代替get.
(3)Bean的一般函數不需要遵守上述的命名規則,但是需要爲public.
(4)對於事件,你可以使用Swing的監聽器作法來處理.

4.      JavaBean的體系結構  
JavaBean體系結構是第一個全面的基於組件的標準模型之一.在集成的IDE中使JavaBean在設計時可以操作.組件模型見如下圖:

結合所查資料得到自己的體會和總結:

(以後有問題都google和baidu,唉這個問題去年上J2EE課的時候,問了很多同學,包括蘇老師,他們都沒有很好的回答出來。)

1.     javabean是一種軟件組件,所謂組件也就是一個java類而已。就像一個機械零件一樣,可以重複的用它來組裝形成產品。但是並不是每個java類都是javabean組件。軟件組件是有一定的概念和體系結構的。自己的理解是,javabean組件是定義了需要get和set方法等規則的組件,通過定義這些規則,可以實現發現組件屬性和事件的機制。

2.      軟件組件的作用:只需編寫一回,各處都可執行。

對於程序員來說,最好的一點就是 JavaBean 可以實現代碼的重複利用,另外對於程序的易維護性等等也有很重大的意義。

3.        javabean 的特點:

1. 執行 java.io.Serializable 接口 
 2. 提供無參數的構造器 
 3. 提供 get  set 方法訪問它的屬性 .

 

二、 javabean 的兩種使用方式:(嵌入 java 代碼方式和使用 jsp 標記符方式)【也就是當作普通的類來使用者在 jsp  頁面處理時有特殊的標記符處理方式】

以下是使用 javabean 的每個功能的兩者不同方式比較:(用了 javabean 只是方便一點,並且可以實現組件重用而已。)

a ) jsp 中使用 javabean 的類的兩種方法:(這兩行代碼的作用是一樣的)

法一: jsp 中使用 <jsp:useBean> 標記符訪問 javabean :

<jsp:useBean id="test" class="test.TestBean" />

 

法二: jsp 中嵌入 java 代碼方式訪問 javabean :

首行導入 javabean :

<%@ page import="com.javaBean.TestBean" %>

下邊就可以像在 java 語言中那樣用了:

<% TestBean testBean=new TestBean(); %>

 

b)jsp 頁面之間傳遞和獲取數據的兩種方法:

l         獲取數據:

法一:使用屬性標記符:

<jsp:getProperty name="test" property="message" />

法二:直接嵌入 java 代碼:(更簡單)

<%=testBean.getName()%>

l         存數據:

法一:使用屬性標記符:

設置單個元素值:

<jsp:setProperty name="test" property="name" value="jcm"  />

設置 jsp 頁面中所有元素的值:

<jsp:setProperty name="test" property="*" />

注:這個方法特別方便,只需要在接收數據並負責顯示的 jsp 頁面使用 <jsp:useBean> 之後加上這一行代碼,所有數據就自動賦值了。然後在接下來的 jsp 代碼中就可以使用 get方法顯示出數據了。

法二:直接嵌入 java 代碼:

<%

String name=req.getParameter(“name”);

testBean.setName(name)

String pwd=req.getParameter(“password”);

testBean.setName(pwd)

 

%>

注:

通常 javabean 函數中除了 get 和 set 方法外,還有一個把數據存入 DB 中的方法(也就是和 DB 連接並實現 insert 語句)。

 

 

問題:

1.       一個 javabean 當作一個普通的類來使用,( import 類,通過 new 方法構造一個對象,然後通過對象調用方法),和通過 jsp 標記符 <jsp:useBean> 來使用有區別嗎?它和普通的類有什麼區別呢? javabean 也可以通過普通類的使用方式來訪問呀。上面總結的內容就是這樣的呀。

2.       是不是隻有通過標記符 <jsp:useBean> 來使用才能真正體檢 javabean 組件的優勢:自動賦值?如果不使用標記符 <jsp:useBean> 可以實現自動賦值嗎?

有待實驗解決。

解決:(終於明白過來了!)

參考資料:

http://www.faq-it.org/archives/jsp/52ae59e6bc6d13af9ee621213347274a.php

關於 javaBean 原理性的兩個問題

作者 :bdsc


初次接觸 javaBean ,遇到了兩個原理性的問題,沒有找到確定的資料得到答案,希望在這兒能得到大家的幫助。 
 1 、 javaBean 的 class 與普通 java 的 class 有什麼區別? javaBean 的類代碼有沒有明確的規定,比如一定要繼承什麼類?如沒有那怎麼說一個 java 的 class 是 javaBean,或不是呢? 
2 、 javaBean 是在客戶端執行還是在服務器執行呢? 
2.1 如果在客戶端執行,那是不是在客戶端一定要有 jvm ,並且要下載對應的 
javaBean 的 class 文件?但我怎麼沒有在自己的系統盤中找不到相應 javaBean 的 
class 文件呢?那 applet 也是在客戶端運行,爲什麼要出現 javaBean 呢? 
2.2 如果在服務器執行,那 javaBean 是在客戶端生成用戶界面而產生的,那服 
務器端執行的代碼怎麼在客戶端生成用戶界面呢? 
--------------------------------------------------------------- 

1 、對於 javaBean 於普通 java 的 class 類的分別並非很明確 主要是 javabean 通常在 jsp 頁面上有特殊的引用方法。 
2 、 javabean 是在服務器端執行的。 javabean 並不直接生成用戶界面(那是 applet 做的事情),而通常只做數據的組織、處理工作。然後通過 jsp 頁面來生成用戶的界面。 

以上只是我個人的理解。我也希望與大家一起討論。 
--------------------------------------------------------------- 

javaBean 是一種(符合要求的) java  

*.jsp 在服務器端編譯運行,通過封裝的 socket (你看到的是 outputStream/ 名字也許不正確 一類的對象)向客戶( webbrowser __ie/navigator) 發送普通字符流(按 http協議 ), 這個字符流由瀏覽器接受,解釋然後按一定的格式顯示 
--------------------------------------------------------------- 

1 、 javaBean 的 class 與普通 java 的 class 有什麼區別? javaBean 的類代碼有沒有明確的規定,比如一定要繼承什麼類?如沒有那怎麼說一個 java 的 class 是 javaBean ,或不是呢? 
javaBean 其實就是一個 JAVA 程序。可以在 JSP 裏面調用。 
ENterprise JavaBean 是用於構建企業應用的 EJB 。必須在應用服務器上面部署。 

2 、 javaBean 是在客戶端執行還是在服務器執行呢? 
javaBean 是在服務器執行,返回給客戶端的只是 HTML 代碼。 
如果要在客戶端執行,可以用 APPLET 
--------------------------------------------------------------- 

sun 很早提出的 javabean 的概念是解決可視的 application 的模塊化提出來的,但由於 java 在客戶端開發實在不怎麼樣,所以 sun 沒有在這方面再進行,作爲界面模塊化開發的 javabean 實際上已經死了。(以上純粹個人觀點,歡迎批評) 

但是隨着 web 應用的興起 jsp 的出現, jsp 需要這樣的概念,功能 / 表現分開,將功能封裝在一個模塊中,以便實現最大化的代碼複用,就又拾起這個 javabean 將它用在 web/jsp 開發上。 


你提到的那篇文章所說的是可視化的 javabean 用在 applet 裏的情況 ,以後你可以在心理分清楚(因爲也許沒人這樣看)別人說的是那種 javabean 。 

至於具體符合什麼要求,說實話我不知道(因爲我個人不贊成用 javabean 的)

 

自己的總結:

1. javaBean 是一種(符合要求的) java 類。 javaBean 與普通 java 的 class 類的分別並非很明確,主要是 javabean 通常在 jsp 頁面上有特殊的引用方法。

2. 所以 javabean 既可以當作普通的類來使用,也可以在 jsp 頁面上有特殊的引用方法。

3.       對於第三個問題:是不是隻有通過標記符 <jsp:useBean> 來使用才能真正體檢 javabean 組件的優勢:自動賦值?如果不使用標記符 <jsp:useBean> 可以實現自動賦值嗎?

答:不是的。 Jsp 的自動賦值是指:通過 <jsp:setProperty name=”myBean” property=”*” /> 這個屬性訪問標記符就可以輕鬆實現對 jsp 頁面上所有參數的賦值,方便一點,而如果用普通類的訪問方式,需要一一獲取各項值,一一調用 set 方法而已。比如:

<%

StuInfoBean stuInfoBean=new StuInfoBean();

String stuNo=request.getParameter("stuNo");

String stuName=request.getParameter("stuName");

stuInfoBean.setStuNo(stuNo);

stuInfoBean.setStuName(stuName);

%>

4.       所以 javabean 只是一個符合必須有 set 和 get 方法,並且可以在 jsp 上有特殊引用方式的 java 類。

二、 一個例子,分別使用 jsp 特殊引用方式和普通類的使用方式來實現對 javabean 的調用:

主要的區別在於兩個地方:

1 ) 對類的使用:

l         jsp 標記符方式:使用 <jsp:useBean />

l         普通類方式: <%@ page import="com.javaBean.StuInfoBean" %>

2 ) 對屬性的賦值:

l         jsp 標記符方式: <jsp:setProperty name="stuInfoBean" property="*" />

l         普通類方式:

<%

StuInfoBean stuInfoBean=new StuInfoBean();

String stuNo=request.getParameter("stuNo");

String stuName=request.getParameter("stuName");

stuInfoBean.setStuNo(stuNo);

stuInfoBean.setStuName(stuName);

%>

具體代碼如下:

1.       使用 jsp 特殊引用方式( StuInfo.jsp ) 

 <% @ page contentType = " text/html;charset=GBK "   %> 
 
 
< html > 
 
 
< head > 
 
 
< title > I use javabean individually </ title > 
 
 
</ head > 
 
 
< jsp:useBean id = " stuInfoBean "  scope = " session "   class = " com.javaBean.StuInfoBean "    /> 
 
 
< jsp:setProperty name = " stuInfoBean "  property = " * "   />  

 < body > 
 
 
< center > 
 
 
< form name = " myForm "  action = " test.jsp " > 
 
 
< table > 
 
 
< tr > 
 
 
< td > 
 
stuNo is: 

 </ td > 
 
 
< td > 
 
 
< input type = " text "  size = 20  name = " stuNo "  value = "" > 
 
 
</ td > 
 
 
</ tr > 
 
 
< tr > 
 
 
< td > 
 
stuName is: 

 </ td > 
 
 
< td > 
 
 
< input type = " text "  size = 20  name = " stuName "  value = "" > 
 
 
</ td > 
 
 
</ tr > 
 
 
< tr > 
 
 
< td > 
 
 
< input type = " submit "    value = " 顯示 " > 
 
 
</ td > 
 
 
</ tr > 
 
 
</ table > 
 
 
</ form > 
 
 
< hr > 
 
 
< table > 
 
 
< tr > 
 
 
< td > 
 
stuNo is: 

 </ td > 
 
 
< td > 
 
 
<%= stuInfoBean.getStuNo() %> 
 
 
</ td > 
 
 
</ tr > 
 
 
< tr > 
 
 
< td > 
 
stuName is: 

 </ td > 
 
 
< td > 
 
 
<%= stuInfoBean.getStuName() %> 
 
 
</ td > 
 
 
</ tr > 
 
 
</ table > 
 
 
</ center > 
 
 
</ body > 
 
 
</ html > 

2.       普通類的使用方式( StuInfo.jsp ) 

 <% @ page contentType = " text/html;charset=GBK "   %> 
 
 
<% @ page  import = " com.javaBean.StuInfoBean "   %> 
 
 
< html > 
 
 
< head > 
 
 
< title > I use javabean individually </ title > 
 
 
</ head > 
 
 
< body > 
 
 
< center > 
 
 
<% 
 
StuInfoBean stuInfoBean
 = new  StuInfoBean();

String stuNo
 = request.getParameter( " stuNo " );

String stuName
 = request.getParameter( " stuName " );

stuInfoBean.setStuNo(stuNo);

stuInfoBean.setStuName(stuName);

 %> 
 
 

 

 < form name = " myForm "  action = " StuInfo.jsp " > 
 
 
< table > 
 
 
< tr > 
 
 
< td > 
 
stuNo is: 

 </ td > 
 
 
< td > 
 
 
< input type = " text "  size = 20  name = " stuNo "  value = "" > 
 
 
</ td > 
 
 
</ tr > 
 
 
< tr > 
 
 
< td > 
 
stuName is: 

 </ td > 
 
 
< td > 
 
 
< input type = " text "  size = 20  name = " stuName "  value = "" > 
 
 
</ td > 
 
 
</ tr > 
 
 
< tr > 
 
 
< td > 
 
 
< input type = " submit "    value = " 顯示 " > 
 
 
</ td > 
 
 
</ tr > 
 
 
</ table > 
 
 
</ form > 
 
 

 < hr > 
 
 
< table > 
 
 
< tr > 
 
 
< td > 
 
stuNo is: 

 </ td > 
 
 
< td > 
 
 
<%= stuInfoBean.getStuNo() %> 
 
 
</ td > 
 
 
</ tr > 
 
 
< tr > 
 
 
< td > 
 
stuName is: 

 </ td > 
 
 
< td > 
 
 
<%= stuInfoBean.getStuName() %> 
 
 
</ td > 
 
 
</ tr > 
 
 
< table > 
 
 
</ center > 
 
 
</ body > 
 
 
</ html > 

 

3.       運行效果:




%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

原文:http://blog.csdn.net/zdwzzu2006/article/details/5151788

一、 javabean 是什麼?

Bean的中文含義是“豆子”,顧名思義,JavaBean是指一段特殊的Java類,

就是有默然構造方法,只有get,set的方法的java類的對象.

 

專業點解釋是:

JavaBean定義了一組規則
JavaBean就是遵循此規則的平常的Java對象 

 

滿足這三個條件:  
   1.執行java.io.Serializable 接口 
 2.提供無參數的構造器 
  3.提供getter 和 setter方法訪問它的屬性.

 

簡單地說,JavaBean是用Java語言描述的軟件組件模型,其實際上是一個類。這些類遵循一個接口格式,以便於使函數命名、底層行爲以及繼承或實現的行爲,可以把類看作標準的JavaBean組件進行構造和應用。

JavaBean一般分爲可視化組件和非可視化組件兩種。可視化組件可以是簡單的GUI元素,如按鈕或文本框,也可以是複雜的,如報表組件;非可視化組件沒有GUI表現形式,用於封裝業務邏輯、數據庫操作等。其最大的優點在於可以實現代碼的可重用性。JavaBean又同時具有以下特性。

*     易於維護、使用、編寫。

*     可實現代碼的重用性。

*     可移植性強,但僅限於Java工作平臺。

*     便於傳輸,不限於本地還是網絡。

*     可以以其他部件的模式進行工作。

對於有過其他語言編程經驗的讀者,可以將其看作類似微軟的ActiveX的編程組件。但是區別在於JavaBean是跨平臺的,而ActiveX組件則僅侷限於Windows系統。總之,JavaBean比較適合於那些需要跨平臺的、並具有可視化操作和定製特性的軟件組件。

 

JavaBean組件與EJB(Enterprise JavaBean,企業級JavaBean)組件完全不同。EJB 是J2EE的核心,是一個用來創建分佈式應用、服務器端以及基於Java應用的功能強大的組件模型。JavaBean組件主要用於存儲狀態信息,而EJB組件可以存儲業務邏輯。

2  使用JavaBean的原因

程序中往往有重複使用的段落,JavaBean就是爲了能夠重複使用而設計的程序段落,而且這些段落並不只服務於某一個程序,而且每個JavaBean都具有特定功能,當需要這個功能的時候就可以調用相應的JavaBean。從這個意義上來講,JavaBean大大簡化了程序的設計過程,也方便了其他程序的重複使用。

JavaBean傳統應用於可視化領域,如AWT(窗口工具集)下的應用。而現在,JavaBean更多地應用於非可視化領域,同時,JavaBean在服務器端的應用也表現出強大的優勢。非可視化的JavaBean可以很好地實現業務邏輯、控制邏輯和顯示頁面的分離,現在多用於後臺處理,使得系統具有更好的健壯性和靈活性。JSP + JavaBean和JSP + JavaBean + Servlet成爲當前開發Web應用的主流模式。

3  JavaBean的開發

在程序設計的過程中,JavaBean不是獨立的。爲了能夠更好地封裝事務邏輯、數據庫操作而便於實現業務邏輯和前臺程序的分離,操作的過程往往是先開發需要的JavaBean,再在適當的時候進行調用。但一個完整有效的JavaBean必然會包含一個屬性,伴隨若干個get/set(只讀/只寫)函數的變量來設計和運行的。JavaBean作爲一個特殊的類,具有自己獨有的特性。應該注意以下3個方面。

*     JavaBean類必須有一個沒有參數的構造函數。

*     JavaBean類所有的屬性最好定義爲私有的。

*     JavaBean類中定義函數setXxx() 和getXxx()來對屬性進行操作。其中Xxx是首字母大寫的私有變量名稱。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章