Posted on 2007-10-31 12:01
一步一步努力向上爬 閱讀(216)
評論(0) 編輯 收藏 所屬分類:
strut 學習
Struts 學習筆記1 -Struts Framework 概覽 |
bruce 原創 更新:2002-11-20 16:22:28 版本: 2.0
|
struts開始于2000年3月,1.0在2001年7月發布。采用Struts能開發出基于MVC(Model-View-Controller)設計模式的應用構架。MVC設計模式把一個系統分成3個相互協調的部分:
Model(模型)
模型用于封裝系統的狀態
View(視圖)
是模型的表示,提供用戶交互界面。當模型狀態發生變化時,視圖應該得到通知,以便更新視圖。
Controller(控制器)
接受來自視圖的請求,修改模型的狀態。
在
基于JSP/Servlet的Web應用中要使用MVC模式,需要解決一個問題。我們知道,HTTP的底層是TCP/IP協議,而TCP/IP是一種無狀
態連接的協議,那么如果我們的模型發生了變化,就無從通知視圖。Struts采用了在“JSP規范 v0.92”中提到的MVC Model 2,這是對
MVC在Web上應用的修訂版。圖示如下:

圖表 1:MVC Model 2(From Malcolm Davis)
Struts
應用有3個主要部件:一個Servlet Controller(由Struts提供,
org.apache.action.ActionServlet,以下簡稱controller)及負責具體業務處理的Action類
(org.apache.action.Action的基類);Jsp頁面(viewer);應用的業務邏輯封裝(model)。Struts 的中心控
制器(ActionServlet)接受所有來自客戶端的請求,并根據系統的配置(Struts-config.xml)路由HTTP請求到其他
Action對象(開發者實現的org.apache.struts.action.Action的子類),在這些Action對象中會進行所有的業務操
作,比如插入一條訂單,修改一條記錄。處理完畢,由Struts的ActionServlet轉向到JSP頁面,將處理結果返回給客戶端。從這兒可以看出
在Struts中ActionServlet擔任了重要的角色,由它控制所有的程序流轉,是MVC三個相對獨立的部分協調工作,提供系統的完善功能。從下
圖可見Struts是MVC Model 2的一個典型應用。

圖表 2:Struts工作機理(From Malcolm Davis)
在Struts啟動時,controller會讀入一個配置文件struts-config.xml,其中定義了前端請求的url與相應的Action類及使用的Form類的映射關系,下面是一個struts-config.xml中的片斷:
-
- <action path="/logon"
- type="org.apache.struts.webapp.example.LogonAction"
- name="logonForm"
- scope="request"
- input="/logon.jsp">
- </action>
從中可以看出,這個action會響應url類似于/logon的請求(在后面我們會看到,這兒的實際
的url要根據在web.xml中配置,比如可能為/logon.do或/logon.other之類的帶后綴的url),負責處理這個請求的
action類是org.apache.struts.webapp.example.LogonAction,使用的FormBean是
logonForm,scope界定了這個FormBean存在的范圍是只在當前request中存在。
struts會讀入這些設置,生成相應的org.apache.action.ActionMapping對象。controller正是使用這些mapping來把HTTP請求轉發到應用的actions。一個ActionMapping指定了
- 一個請求URI
- 對應的類(Action的子類)
- 需要的屬性
對于一個DB應用,
- 一個商業邏輯Bean用于連接、查詢數據庫
- 這個Bean返回結果到Action
- Action將這些結果存儲到request的form bean中
- Jsp顯示