2010-11-25 58 views
14

我已經在做一些JSP教程的bean,我不明白bean類是什麼。所有這一切都是獲取和設置方法。我們爲什麼要使用它們?豆有什麼意義?

public class UserData { 

String username; 
String email; 
int age; 

public void setUsername(String value) 
{ 
    username = value; 
} 

public void setEmail(String value) 
{ 
    email = value; 
} 

public void setAge(int value) 
{ 
    age = value; 
} 

public String getUsername() { return username; } 

public String getEmail() { return email; } 

public int getAge() { return age; } 

}

和JSP是

<jsp:useBean id="user" class="user.UserData" scope="session"/> 
<HTML> 
<BODY> 
You entered<BR> 
Name: <%= user.getUsername() %><BR> 
Email: <%= user.getEmail() %><BR> 
Age: <%= user.getAge() %><BR> 
</BODY> 
</HTML> 
+0

相關:http://stackoverflow.com/questions/1727603/places-where-java-beans-used。如果沒有Javabean,你最終會得到`Object []`或`Object [] []`或`Map `等,這是遠遠不能重複使用和自我記錄的,甚至沒有任何東西邏輯)。 – BalusC 2010-11-25 11:22:32

回答

11
  1. 豆獲得Java的 「編寫一次,隨處運行」 模式的所有優點。 可以控制暴露給應用程序 構建器工具的Bean的屬性,事件和方法。

  2. Bean可能被設計爲在不同的語言環境中正確運行,這使得它在全球市場中可以使用 。

  3. 可以提供輔助軟件來幫助人員配置Bean。該軟件爲 ,只有在設置了該組件的設計時參數時才需要。它不需要包含在運行時環境中。 Bean的配置設置可以保存在持久存儲中,並在稍後恢復 。

  4. Bean可以註冊以接收來自其他對象的事件並且可以生成將 發送到其他對象的事件。

採用小腳本(那些<% %>東西)的確是高,因爲標籤庫(如JSTL)和EL(Expression Language,那些${}東西)在誕生氣餒十年前。的小腳本的主要缺點是:

  1. 重用性:你不能再使用小腳本。

  2. 可替換性:您不能使腳本抽象化。 OO-ability:你不能使用繼承/組合。

  3. 可調性:如果scriptlet中途拋出一個異常,你所得到的只是一個空白頁面。

  4. 可測試性:scriptlet不是單元可測試的。

  5. 可維護性:每個saldo需要更多的時間來維護混合/混亂/重複的代碼邏輯。

1

你可以有JSP無豆,但是,其結果將是,無論是代碼以邏輯的關心和代碼走的美學的護理網站將混亂起來。這不是特別理想,因爲在大多數情況下,一羣人對邏輯進行編碼,而另一羣人則關注美學,所以豆類允許一定程度的分離,使網站建設者的生活更輕鬆。

豆還允許您重複使用代碼,這是您應該使用它的另一個原因。

5

JavaBeans的主要原因是可重用性。 JavaBeans可以用於JSP,Servlet和其他Java技術。

這是一個簡單的可序列化對象,用於將多個對象封裝爲一個對象。即,我們可以發送一個完全定義的bean,以便通過線路單獨發送每個屬性。

3

accessor(getter)和mutator(setter)方法通常用於提供封裝。由於實例變量是私有的,因此只能通過這些方法在類之外訪問它們。

所以通俗點說:在不破壞其他人使用你的代碼的代碼的情況下改變你的實現代碼的能力是封裝的關鍵好處

2

我正在讀JavaFX Properties and Binding那裏我在這裏得到了JavaBeans的實際意義。

Java編程語言能夠在對象中封裝數據 ,但不會強制執行任何特定的命名 約定您定義的方法。例如,您的代碼 可能會定義一個Person類,它封裝了一個名字和一個姓氏。但是,如果沒有命名約定,不同的程序員可能會爲這些方法選擇不同的名稱:read_first(),firstName(), getFN()等等都是完全有效的選擇。但是,不保證這些名稱對其他開發人員有意義。

JavaBeans組件體系結構通過 解決了這個問題,定義了一些簡單的命名約定,這些命名約定在 項目中實現了一致性。在JavaBeans編程中,這些 方法的完整簽名是:public void setFirstName(String name),public String getFirstName(),public void setLastName(String name)和public String getLastName()。這種命名模式很容易識別,對於編程人員和編輯工具(如NetBeans IDE)都可以使用 。 在JavaBeans術語中,Person對象據說包含 firstName和lastName屬性。

JavaBeans模型還提供對複雜屬性類型的支持, 加上事件傳遞系統。它還包含一些支持 的類,所有類都可作爲java.beans包下的API使用。 因此,掌握JavaBeans編程需要學習所需的命名約定及其相應的API。 (更多 關於一般JavaBeans的背景閱讀,請參閱Java教程的JavaBeans課 )。

1

它主要用於REUSABILTY。這是一個簡單的可序列化對象,用於將多個對象封裝爲一個對象。