JavaBean 概述
用戶可以使用JavaBean將功能、處理、值、數據庫訪問和其他任何可以用java代碼創造的對象進行打包,并且其他的開發者可以通過內部的JSP頁面、Servlet、其他JavaBean、applet程序或者應用來使用這些對象。用戶可以認為JavaBean提供了一種隨時隨地的復制和粘貼的功能,而不用關心任何改變。
JavaBean 的發展
最初,JavaBean的目的是為了將可以重復使用的軟件代碼打包標準。特別是用與幫助廠家開發在綜合開發環境(IDE)下使用的java軟件部件。這些包括如Grid控件,用戶可以將該部件拖放到開發環境中。從此,JavaBean就可以擴展為一個java web 應用的標準部件,并且JavaBean部件框架已經擴展為企業版的 Bean(EJB)。
JavaBean需求
JavaBean是java類,屬于某些特定的譯碼知道方針,并且擴展了適應性和范圍,允許用戶訪問內部的屬性和方法。通過這些,JavaBean類可以用于下列方法:
1. 在IDE中,JavaBean的功能允許應用開發者瀏覽其中的方法,即使JavaBean是被編譯的,并且無法利用原始的源文件。
2. 在 Remote Method Invocation(RMI) 的分布式風格中,這項功能聽起來并不讓人興奮,但是在未來的包含企業版的JavaBean后,將改變這種情況。
3. 為了JavaBean的屬性值和狀態可以保存到磁盤上。
這里說的有些簡單,如果想了解更多的東西,可以查閱一些資料。
JavaBean設計注意事項
實際應用中,在表現對象或者處理前擴展JavaBean的設計非常有用。通常認為如果提供信息,web開發者將在功能上滿足擁護對JavaBean的需求。例如: HTML中顯示敏感的數據時,用戶可以屏蔽的條目,如密碼、電話號碼等。
良好規劃設計的JavaBean是值得信賴的。
Java 中的 null 不同于 SQL 中的 null
看這樣一道測試程序:
public class NullTest
{
public static void main(String[] args)
{
int I = 0;
// int I = null; // not a valid initialization
String str = null;
String strZeroOutValue = “”;
StringBuffer sb = new StringBuffer(“Null test: String initialized as null = “);
sb.append(str);
sb.append(“\n String representing a Zero Out Value:”);
sb.append(strZeroOutValue);
System.out.println(sb.toString());
}
}
這個程序將產生下面的結果:
Null test: String initialized as null = null
String representing a Zero Out Value:
在JavaBean中, 我們將 I 變量聲明為一個 int, 我們必須處理與該變量相關的值,因為I 默認的沒有值,int 類型無法初始化為 null, 如果int 值沒有進行明確的初始化,編譯器將提示錯誤。
執行 NullTest 程序,將驗證在文本中空字符串是空值的替代,用于顯示 SQL 的插入和更新。如果我們需要刪除一些信息,通過刪除表單區域的文本,需要將數據庫發送長度為0的字符串。
盡管大多數數據庫將空字符串作為空值進行操作,如果我們使用的數據庫不支持處理空字符串的話,我們必須寫入附加的java代碼,來創建自己的SQL插入聲明。
例如:
if(test.length==0)
{
sb.append(“null”);
}
else
{
sb.append(test);
}
JavaBean 的范圍:
JavaBean 的范圍。 Scope 是一個具有生命時間的變量。JavaBean的范圍在
<jsp:useBean scope=”….>標志中右邊進行表示。將產生一個JavaBean的快捷參考。
說明:jsp服務器引擎將剝離<jsp。。。。標記。并且在最終用戶的瀏覽器上無法顯示實際代碼。
存在下面四種范圍: 頁面、 請求、 對話、 應用。
對話范圍:
對話范圍的JavaBean 主要應用與跨多個頁面和時間段: 例如填充 用戶信息。 添加信息并且接受回饋,保存用戶最近執行頁面的軌跡。對話范圍JavaBean保留一些和用戶對話 ID 相關的信息。這些信息來自臨時的對話cookie,并在當用戶關閉瀏覽器時,這個cookie將從客戶端和服務器刪除。
頁面/請求范圍:
頁面和請求范圍的JavaBean有時類似表單 的bean , 這是因為 他們大豆用與處理表單。表單需要很長的時間來處理用戶的輸入,通常情況下用于頁面接受HTTP/POST或者GET請求。另外頁面和請求范圍的bean可以用于減少大型站點服務器上的負載,如果使用對話bean,耽擱的處理就可能會消耗掉很多資源。
應用:
應用范圍通常應用于服務器的部件,例如 JDBC 連接池、應用監視、擁護計數和其他參與用戶行為的類。
在Bean中限制HTML的產生:
理論上,JavaBean 將不會產生任何HTML,因為這是jsp層負責的工作;然而,為了動態消息提供一些預先準備的格式是非常有用的。產生的HTML將被標注的 JavaBean方法返回。
這里有一些非常重要的事情:
1. 不要試圖在JavaBean返回的HTML中放置任何字體尺寸。
并不是所有的瀏覽器都相同。很多瀏覽器無法處理完整的字體尺寸。
2. 不要試圖在JavaBean返回的HTML中放置任何腳本或者DHTML。
向頁面直接輸出腳本或者DHTML相當于自我毀滅,因為某些瀏覽器版本在處理不正確的腳本時會崩潰(非常少但是有)。如果用戶的JavaBean在運行時是動態的推出復雜的HTML語言,用戶將陷入調試的噩夢。另外,復雜的HTML將限制JavaBean的壽命和靈活性。
3. 不要提供任何的選擇。
如果用戶使用不同的系統瀏覽頁面,可以提供一種可以替換的方法。
用戶可以使用JavaBean將功能、處理、值、數據庫訪問和其他任何可以用java代碼創造的對象進行打包,并且其他的開發者可以通過內部的JSP頁面、Servlet、其他JavaBean、applet程序或者應用來使用這些對象。用戶可以認為JavaBean提供了一種隨時隨地的復制和粘貼的功能,而不用關心任何改變。
JavaBean 的發展
最初,JavaBean的目的是為了將可以重復使用的軟件代碼打包標準。特別是用與幫助廠家開發在綜合開發環境(IDE)下使用的java軟件部件。這些包括如Grid控件,用戶可以將該部件拖放到開發環境中。從此,JavaBean就可以擴展為一個java web 應用的標準部件,并且JavaBean部件框架已經擴展為企業版的 Bean(EJB)。
JavaBean需求
JavaBean是java類,屬于某些特定的譯碼知道方針,并且擴展了適應性和范圍,允許用戶訪問內部的屬性和方法。通過這些,JavaBean類可以用于下列方法:
1. 在IDE中,JavaBean的功能允許應用開發者瀏覽其中的方法,即使JavaBean是被編譯的,并且無法利用原始的源文件。
2. 在 Remote Method Invocation(RMI) 的分布式風格中,這項功能聽起來并不讓人興奮,但是在未來的包含企業版的JavaBean后,將改變這種情況。
3. 為了JavaBean的屬性值和狀態可以保存到磁盤上。
這里說的有些簡單,如果想了解更多的東西,可以查閱一些資料。
JavaBean設計注意事項
實際應用中,在表現對象或者處理前擴展JavaBean的設計非常有用。通常認為如果提供信息,web開發者將在功能上滿足擁護對JavaBean的需求。例如: HTML中顯示敏感的數據時,用戶可以屏蔽的條目,如密碼、電話號碼等。
良好規劃設計的JavaBean是值得信賴的。
Java 中的 null 不同于 SQL 中的 null
看這樣一道測試程序:
public class NullTest
{
public static void main(String[] args)
{
int I = 0;
// int I = null; // not a valid initialization
String str = null;
String strZeroOutValue = “”;
StringBuffer sb = new StringBuffer(“Null test: String initialized as null = “);
sb.append(str);
sb.append(“\n String representing a Zero Out Value:”);
sb.append(strZeroOutValue);
System.out.println(sb.toString());
}
}
這個程序將產生下面的結果:
Null test: String initialized as null = null
String representing a Zero Out Value:
在JavaBean中, 我們將 I 變量聲明為一個 int, 我們必須處理與該變量相關的值,因為I 默認的沒有值,int 類型無法初始化為 null, 如果int 值沒有進行明確的初始化,編譯器將提示錯誤。
執行 NullTest 程序,將驗證在文本中空字符串是空值的替代,用于顯示 SQL 的插入和更新。如果我們需要刪除一些信息,通過刪除表單區域的文本,需要將數據庫發送長度為0的字符串。
盡管大多數數據庫將空字符串作為空值進行操作,如果我們使用的數據庫不支持處理空字符串的話,我們必須寫入附加的java代碼,來創建自己的SQL插入聲明。
例如:
if(test.length==0)
{
sb.append(“null”);
}
else
{
sb.append(test);
}
JavaBean 的范圍:
JavaBean 的范圍。 Scope 是一個具有生命時間的變量。JavaBean的范圍在
<jsp:useBean scope=”….>標志中右邊進行表示。將產生一個JavaBean的快捷參考。
說明:jsp服務器引擎將剝離<jsp。。。。標記。并且在最終用戶的瀏覽器上無法顯示實際代碼。
存在下面四種范圍: 頁面、 請求、 對話、 應用。
對話范圍:
對話范圍的JavaBean 主要應用與跨多個頁面和時間段: 例如填充 用戶信息。 添加信息并且接受回饋,保存用戶最近執行頁面的軌跡。對話范圍JavaBean保留一些和用戶對話 ID 相關的信息。這些信息來自臨時的對話cookie,并在當用戶關閉瀏覽器時,這個cookie將從客戶端和服務器刪除。
頁面/請求范圍:
頁面和請求范圍的JavaBean有時類似表單 的bean , 這是因為 他們大豆用與處理表單。表單需要很長的時間來處理用戶的輸入,通常情況下用于頁面接受HTTP/POST或者GET請求。另外頁面和請求范圍的bean可以用于減少大型站點服務器上的負載,如果使用對話bean,耽擱的處理就可能會消耗掉很多資源。
應用:
應用范圍通常應用于服務器的部件,例如 JDBC 連接池、應用監視、擁護計數和其他參與用戶行為的類。
在Bean中限制HTML的產生:
理論上,JavaBean 將不會產生任何HTML,因為這是jsp層負責的工作;然而,為了動態消息提供一些預先準備的格式是非常有用的。產生的HTML將被標注的 JavaBean方法返回。
這里有一些非常重要的事情:
1. 不要試圖在JavaBean返回的HTML中放置任何字體尺寸。
并不是所有的瀏覽器都相同。很多瀏覽器無法處理完整的字體尺寸。
2. 不要試圖在JavaBean返回的HTML中放置任何腳本或者DHTML。
向頁面直接輸出腳本或者DHTML相當于自我毀滅,因為某些瀏覽器版本在處理不正確的腳本時會崩潰(非常少但是有)。如果用戶的JavaBean在運行時是動態的推出復雜的HTML語言,用戶將陷入調試的噩夢。另外,復雜的HTML將限制JavaBean的壽命和靈活性。
3. 不要提供任何的選擇。
如果用戶使用不同的系統瀏覽頁面,可以提供一種可以替換的方法。