Struts1的體系結構分析

一、Struts的體系結構




如圖所示,Struts 是MVC的一種實現,其體系結構包括模型、視圖和控制器三部分。  
  下面讓我們從MVC的角度來看看struts的體系結構與工作原理:

   1. Model部分

    Struts 的Model部分由 ActionFormBean和JavaBean組成。其中ActionForm用於封裝用戶請求參數,所有的用戶請求參數由系統自動封裝成ActionForm對象。該對象被ActionServlet轉發給Action;然後 Action根據ActionForm裏的請求參數處理用戶請求。

    而JavaBean則封裝了底層的業務邏輯,包括數據庫訪問等。在更復雜的應用中,JavaBean所代表的絕非一個簡單的JavaBean,可能是EJB組件或者其他的業務邏輯組件。大型應用程序通常在Bean方法內部封裝事務邏輯。比如購物車Bean,就會利用擁有狀態信息的會話bean保存和讀取用戶購買商品的信息,可能還有checkOut()方法用來檢查用戶的信用卡,並向倉庫發定貨信息。小型程序中,操作可能會被內嵌在Action類(它是struts框架中的業務邏輯控制器)對象中。當邏輯簡單時這個方法很適合。建議用戶將事務邏輯(要做什麼)與Action類所扮演的角色(決定做什麼)分開。

   2. View部分

    Struts 的View 部分採用 lSP 實現。 Struts提供了豐富的標籤庫,通過這些標籤庫可以最大限度地減少腳本的使用。這些自定義的標籤庫可以實現與Model(Bean)的有效交互,並增加了顯示功能。如<bean:write>標籤就可以用來顯示JavaBean(包括ActionFormBean)屬性。

   整個應用由客戶端請求(如提交Form表單)驅動,當客戶端請求被ActionServlet類對象(程序根據web.xml中配置的ActionServlet初始化類對象)攔截時,ActionServlet根據請求決定是否需要調用Model處理用戶請求,當用戶請求處理完成後,其處理結果通過JSP 呈現給用戶。

   3.Controller部分

    Struts 的Controller由兩個部分組成。系統核心控制器和業務邏輯控制器。其中,ActionServlet爲系統核心控制器。該控制器由Struts框架提供,繼承HttpServlet類,因此可以配置成一個標準的Servlet。該控制器負責攔截所有Http請求,然後根據用戶請求決定是否需要調用業務邏輯控制器,如果需要調用業務邏輯控制器,則將請求轉發給Action處理,否則直接轉向請求的JSP頁面。

   業務邏輯控制器負責處理用戶請求,但業務邏輯控制器本身並不具有處理能力,而是調用 Model來完成處理。業務邏輯控制器對應圖中的Action部分。

  Action的業務邏輯實現,是通過調用ActionServlet傳遞給自己的ActionMapping、ActionForward等組件對象協調完成的。其中,ActionMapping與ActionForward指定了不同業務邏輯或流程的運行方向。

參考資料:

http://blog.sina.com.cn/s/blog_5f30147a0100p1o6.html

http://hi.baidu.com/wtx521/blog/item/ca256f5649d890113a293596.html

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