隨筆 - 71  文章 - 15  trackbacks - 0
          <2025年6月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          因為口渴,上帝創造了水;
          因為黑暗,上帝創造了火;
          因為我需要朋友,所以上帝讓你來到我身邊
          Click for Shaanxi xi'an, Shaanxi Forecast
          ╱◥█◣
            |田|田|
          ╬╬╬╬╬╬╬╬╬╬╬
          If only I have such a house!
          〖總在爬山 所以艱辛〗
          Email:myesjoy@yahoo.com.cn
          NickName:yesjoy
          MSN:myesjoy@hotmail.com
          QQ:150230516

          〖總在尋夢 所以苦痛〗

          常用鏈接

          留言簿(3)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          Hibernate在線

          Java友情

          Java認證

          linux經典

          OA系統

          Spring在線

          Structs在線

          專家專欄

          企業信息化

          大型設備共享系統

          工作流

          工作流產品

          網上購書

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          Struts是一個Web Frameworkstruts開始于2000年3月,1.020017月發布。采用Struts能開發出基于MVC(Model-View-Controller)設計模式的應用構架。MVC設計模式把一個系統分成3個相互協調的部分。struts frameworkMVC 模式的體現,下面我們就從分別從模型、視圖、控制來看看struts的體系結構(Architecture)。
          在基于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)

          Model(模型)
          模型用于封裝系統的狀態。
          Struts中,系統模型的狀態主要由ActiomForm Bean和值對象體現。

          View(視圖)
          是模型的表示,提供用戶交互界面。當模型狀態發生變化時,視圖應該得到通知,以便更新視圖。
          首先,Struts提供了Javaorg. apache.struts.action.ActionFormJava開發者將該類細分來創建表單bean。在運行時,該bean有兩種用法:
                   ―  JSP準備相關的HTML表單以進行顯示時,JSP將訪問該bean(它保存要放入表單中的值)。那些值是從業務邏輯或者是從先前的用戶輸入來提供的。
                   ―  當從Web瀏覽器中返回用戶輸入時,該bean將驗證并保存該輸入以供業務邏輯或(如果驗證失敗的話)后續重新顯示使用。
          其次,Struts提供了許多定制JSP標記,它們的使用簡單,但是它們在隱藏信息方面功能強大。例如,除了bean名稱和給定bean中每個段的名稱之外,頁面設計者不需要知道有關表單bean的更多信息。

          Controller(控制器)
          接受來自視圖的請求,修改模型的狀態。Struts framework中, Controller主要是ActionServlet,但是對于業務邏輯的操作則主要由ActionActionMappingActionForward這幾個組件協調完成(也許這幾個組件,應該劃分到模型中的業務邏輯一塊)。其中,Action扮演了真正的控制邏輯的實現者,而ActionMappingActionForward則指定了不同業務邏輯或流程的運行方向。

          下面從系統的角度簡單介紹一下Struts的工作原理:
          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,使用的FormBeanlogonFormscope界定了這個FormBean存在的范圍是只在當前request中存在。
          struts
          會讀入這些設置,生成相應的org.apache.action.ActionMapping對象。controller正是使用這些mapping來把HTTP請求轉發到應用的actions。一個ActionMapping指定了

          • 一個請求URI
          • 對應的類(Action的子類)
          • 需要的屬性


          對于一個DB應用,

          • 一個商業邏輯Bean用于連接、查詢數據庫
          • 這個Bean返回結果到Action
          • Action將這些結果存儲到requestform bean
          • Jsp顯示

           轉自:http://www.javaresearch.org/article/showarticle.jsp?column=23&thread=256

          posted on 2006-03-05 11:52 ★yesjoy★ 閱讀(264) 評論(0)  編輯  收藏 所屬分類: Structs學習
          主站蜘蛛池模板: 大竹县| 扎赉特旗| 南陵县| 金沙县| 自贡市| 泰州市| 黄梅县| 镇雄县| 海安县| 和龙市| 丽水市| 德惠市| 新和县| 和政县| 江孜县| 古丈县| 平阴县| 时尚| 巧家县| 宿松县| 疏附县| 绵阳市| 五寨县| 大悟县| 交城县| 阿坝县| 林西县| 巨野县| 英吉沙县| 安国市| 莱阳市| 景谷| 塔河县| 郯城县| 水城县| 富民县| 延长县| 云南省| 普宁市| 高州市| 政和县|