應用程式的需求文件往往著重於使用者介面,但每個提交請求所需的後端處理邏輯也必須明確定義。Model 元件開發者專注於建立支援所有功能需求的 JavaBeans 類別。雖然具體 Bean 特性隨需求大幅變化,但通常可歸類為幾種基本型態。在此之前,先回顧與 Beans 密切相關的「範圍」概念。
在 Web 應用程式中,JavaBeans 可儲存於不同「屬性」集合中,每種集合擁有不同的生命週期與可見度規則,這些規則統稱為 Bean 的範圍。JSP 規格定義四種範圍(括號內為 Servlet API 對應物):
service() 方法區域變數)同一 Web 應用程式的 JSP 與 Servlet 共享同一組 Bean 集合。例如,在 Servlet 中將 Bean 存為 Request 屬性:
MyCart mycart = new MyCart(...);
request.setAttribute("cart", mycart);
轉向的 JSP 頁面即可用標準動作標籤取得:
<jsp:useBean id="cart" scope="request" class="com.mycompany.MyApp.MyCart"/>
Struts 架構假設每個請求輸入都有對應的 ActionForm Bean(實作 ActionForm 介面的類別)。若在 ActionMapping 設定檔中定義,Controller Servlet 會在呼叫 Action 前自動執行:
set 方法(類似 <jsp:setProperty> 通配符)ActionForm 傳遞給 Action 的 perform() 方法撰寫 ActionForm Bean 原則:
ActionForm 介面本身無特定實作方法,僅標識角色get/set 方法,不含商業邏輯Action 類別或商業邏輯 Bean 中執行username 對應 setUsername())ActionForm 包含所有欄位,提交至同一 Action,利於頁面重組不影響處理邏輯系統實際狀態通常以一組 JavaBeans 表示。例如購物車系統:
小型系統或無需長期保存狀態時,狀態 Bean 可包含所有細節。大型系統常將狀態持久化至資料庫(如 CustomerBean 對應 CUSTOMERS 資料表),依需求在記憶體建立或清除。企業級應用也常使用 Entity EJBs 處理持久化狀態。