Struts的基本流程

          Posted on 2009-05-31 17:33 閱讀(188) 評論(0)  編輯  收藏
          本文對于Struts的基本工作原理MVC模式不進行具體的討論,僅針對container啟動之后,struts框架中所發生的一些"事情"進行討論。

              通常我們在配置Struts框架的時候,所使用的Controller都是默認的org"apache"struts"action"ActionServlet,它繼承自javax.servlet.http.HttpServlet,因此具有一般servlet的所有特征,必須在web.xml中對其進行注冊。當我們的container第一次啟動的時候(這個說法不是很準確,或者是ActionServlet第一次被請求調用得時候),會自動加載ActionServlet,同時調用其中的init()方法。

          一個用戶的請求是通ActionServlet來處理和轉發的。那么,ActionServlet如何決定把用戶請求轉發給哪個Action對象呢?這就需要一些描述用戶請求路徑和Action衍射關系的配置信息了。在Struts中,這些配置映射信息都存儲在特定的XML文件Struts- config.xml中。在該配置文件中,每一個Action的映射信息都通過一個<Action>元素來配置。

          這些配置信息在系統啟動的時候被讀入內存,供Struts在運行期間使用。在內存中,每一個<action>元素都對應一個org.apache.struts.action.ActionMapping類的實例。

          對于采用Struts框架的web應用,在web應用啟動時就會加載并初始化ActionServlet,ActionServlet從struts- config.xml文件中讀取配置信息,把它們存放到各個配置對象中,例如Action的映射信息存放在ActionMapping

          當ActionServlet接收到一個客戶請求時,將執行如下流程:

          1.檢索和用戶請求相匹配的ActionMapping實例,如果不存在,就返回用戶請求路徑無效信息。

          2.如ActionForm實例不存在,就創建一個ActionForm對象,把客戶提交的表單數據保存到ActionForm對象中。

          3.根據配置信息決定是否需要表單驗證。如果需要驗證,就調用ActionForm的Validate()方法。

          4.如果ActionForm的Validate()方法返回null或返回一個不包含ActionMessage的ActionErrors對象,就表示表單驗證成功。

          5.ActionServlet根據ActionMapping實例包含的映射信息決定將請求轉發給哪個Action。如果相應的Action實例不存在,就先創建這個實例,然后調用Action的execute()方法。

          6.Action的execute()方法返回一個ActionForward對象,ActionServlet再把客戶請求轉發給ActionForward對象指向的JSP組件。

          7.ActionForward對象指向的JSP組件生成動態網頁,返回給客戶。


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


          網站導航:
           

          posts - 40, comments - 9, trackbacks - 0, articles - 9

          Copyright © 希

          主站蜘蛛池模板: 太仆寺旗| 左云县| 迁西县| 哈巴河县| 二连浩特市| 呼伦贝尔市| 英山县| 丹江口市| 深水埗区| 龙山县| 天峻县| 林州市| 陇南市| 高阳县| 新蔡县| 名山县| 阳曲县| 营口市| 即墨市| 西平县| 邹城市| 巴东县| 资溪县| 南城县| 库伦旗| 宜兰市| 剑川县| 长武县| 五华县| 五莲县| 云梦县| 曲周县| 永川市| 沭阳县| 甘德县| 乾安县| 礼泉县| 馆陶县| 卢湾区| 蓬溪县| 东光县|