JSP Model1

JSP Model2(MVC)

Structs框架:

- Client browser(客戶瀏覽器)
來自客戶瀏覽器的每個 HTTP 請求創建一個事件。Web 容器將用一個 HTTP 響應作出響應。 - Controller(控制器)
控制器接收來自瀏覽器的請求,并決定將這個請求發往何處。就 Struts 而言,控制器是以 servlet 實現的一個命令設計模式。struts-config.xml
文件配置控制器。
- 業務邏輯
業務邏輯更新模型的狀態,并幫助控制應用程序的流程。就 Struts 而言,這是通過作為實際業務邏輯“瘦”包裝的Action
類完成的。
- Model(模型)的狀態
模型表示應用程序的狀態。業務對象更新應用程序的狀態。ActionForm bean 在會話級或請求級表示模型的狀態,而不是在持久級。JSP 文件使用 JSP 標記讀取來自 ActionForm bean 的信息。 - View(視圖)
視圖就是一個 JSP 文件。其中沒有流程邏輯,沒有業務邏輯,也沒有模型信息 -- 只有標記。標記是使 Struts 有別于其他框架(如 Velocity)的因素之一。

提示:模塊是在Struts 1.1中新提出的概念,在稍后的內容中我們將詳細介紹,你現在可以簡單地把模塊看作是一個子系統,它們共同組成整個應用,同時又各自獨立。Struts 1.1中所有的處理都是在特定模塊環境中進行的。模塊的提出主要是為了解決Struts 1.0中單配置文件的問題。
控制器接收HTTP請求,并從ActionConfig中找出對應于該請求的Action子類,如果沒有對應的Action,控制器直接將請求轉發給JSP或者靜態頁面。否則控制器將請求分發至具體Action類進行處理。
在控制器調用具體Action的execute方法之前,ActionForm對象將利用HTTP請求中的參數來填充自己(可選步驟,需要在配置文件中指定)。具體的ActionForm對象應該是ActionForm的子類對象,它其實就是一個JavaBean。此外,還可以在ActionForm類中調用validate方法來檢查請求參數的合法性,并且可以返回一個包含所有錯誤信息的ActionErrors對象。如果執行成功,ActionForm自動將這些參數信息以JavaBean(一般稱之為form bean)的方式保存在Servlet Context中,這樣它們就可以被其它Action對象或者JSP調用。
Struts將這些ActionForm的配置信息都放在FormBeanConfig集合中,通過它們Struts能夠知道針對某個客戶請求是否需要創建相應的ActionForm實例。
Action很簡單,一般只包含一個execute方法,它負責執行相應的業務邏輯,如果需要,它也進行相應的數據檢查。執行完成之后,返回一個ActionForward對象,控制器通過該ActionForward對象來進行轉發工作。我們主張將獲取數據和執行業務邏輯的功能放到具體的JavaBean當中,而Action只負責完成與控制有關的功能。遵循該原則,所以在上圖中我將Action對象歸為控制器部分。

參考:
http://www-128.ibm.com/developerworks/cn/java/l-struts1-1/
http://www-128.ibm.com/developerworks/cn/java/j-struts/index.html