posts - 9, comments - 4, trackbacks - 0, articles - 21
          Struts 學(xué)習(xí)筆記1 -Struts  Framework  概覽
          bruce 原創(chuàng)   更新:2002-11-20 16:22:28  版本: 2.0   

          struts開始于2000年3月,1.0在2001年7月發(fā)布。采用Struts能開發(fā)出基于MVC(Model-View-Controller)設(shè)計(jì)模式的應(yīng)用構(gòu)架。MVC設(shè)計(jì)模式把一個系統(tǒng)分成3個相互協(xié)調(diào)的部分:

          Model(模型)
          模型用于封裝系統(tǒng)的狀態(tài)

          View(視圖)
          是模型的表示,提供用戶交互界面。當(dāng)模型狀態(tài)發(fā)生變化時,視圖應(yīng)該得到通知,以便更新視圖。

          Controller(控制器)
          接受來自視圖的請求,修改模型的狀態(tài)。

          在 基于JSP/Servlet的Web應(yīng)用中要使用MVC模式,需要解決一個問題。我們知道,HTTP的底層是TCP/IP協(xié)議,而TCP/IP是一種無狀 態(tài)連接的協(xié)議,那么如果我們的模型發(fā)生了變化,就無從通知視圖。Struts采用了在“JSP規(guī)范 v0.92”中提到的MVC Model 2,這是對 MVC在Web上應(yīng)用的修訂版。圖示如下:


          圖表 1:MVC Model 2(From Malcolm Davis)

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

          圖表 2:Struts工作機(jī)理(From Malcolm Davis)

          在Struts啟動時,controller會讀入一個配置文件struts-config.xml,其中定義了前端請求的url與相應(yīng)的Action類及使用的Form類的映射關(guān)系,下面是一個struts-config.xml中的片斷:

          1.     <action    path="/logon"
          2.                type="org.apache.struts.webapp.example.LogonAction"
          3.                name="logonForm"
          4.               scope="request"
          5.               input="/logon.jsp">
          6.     </action>


          從中可以看出,這個action會響應(yīng)url類似于/logon的請求(在后面我們會看到,這兒的實(shí)際 的url要根據(jù)在web.xml中配置,比如可能為/logon.do或/logon.other之類的帶后綴的url),負(fù)責(zé)處理這個請求的 action類是org.apache.struts.webapp.example.LogonAction,使用的FormBean是 logonForm,scope界定了這個FormBean存在的范圍是只在當(dāng)前request中存在。
          struts會讀入這些設(shè)置,生成相應(yīng)的org.apache.action.ActionMapping對象。controller正是使用這些mapping來把HTTP請求轉(zhuǎn)發(fā)到應(yīng)用的actions。一個ActionMapping指定了
          • 一個請求URI
          • 對應(yīng)的類(Action的子類)
          • 需要的屬性

          對于一個DB應(yīng)用,
          • 一個商業(yè)邏輯Bean用于連接、查詢數(shù)據(jù)庫
          • 這個Bean返回結(jié)果到Action
          • Action將這些結(jié)果存儲到request的form bean中
          • Jsp顯示

          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 从化市| 灵台县| 兴和县| 宁阳县| 封开县| 延津县| 汤原县| 桃源县| 平顺县| 陵川县| 安图县| 阜城县| 舟曲县| 乐安县| 石城县| 海安县| 乌海市| 晋州市| 宁强县| 巧家县| 蓬安县| 桐城市| 中西区| 尼勒克县| 蕉岭县| 绥中县| 和田县| 广德县| 唐山市| 桂东县| 彩票| 汉寿县| 临洮县| 青州市| 通州区| 西丰县| 扬州市| 云阳县| 咸阳市| 昌江| 永康市|