struts框架的運行原理和流程


 

從此圖中簡單描述一下struts2的運行流程:


1、客戶端請求一個HttpServletRequest的請求,如在瀏覽器中輸入http://localhost: 8080/bookcode/Reg.action就是提交一個(HttpServletRequest)請求。

2、這個請求經過一系列的過濾器(Filter)如(ActionContextCleanUp、其他過濾器(SiteMesh等)、 FilterDispatcher)。注意:這里是有順序的,先ActionContext CleanUp,再其他過濾器(Othter Filters、SiteMesh等),最后到FilterDispatcher。

FilterDispatcher是控制器的核心,就是MVC的Struts 2實現中控制層(Controller)的核心。

3、FilterDispatcher詢問ActionMapper是否需要調用某個Action來處理這個(HttpServlet Request)請求,如果ActionMapper決定需要調用某個Action,FilterDispatcher則把請求的處理交給ActionProxy

4、ActionProxy通過Configuration Manager(struts.xml)詢問框架的配置文件,找到需要調用的Action類。例如,用戶注冊示例將找到UserReg類

5、ActionProxy創建一個ActionInvocation實例,同時ActionInvocation通過代理模式調用Action。但在調用之前,ActionInvocation會根據配置加載Action相關的所有Interceptor(攔截器)。

6、 一旦Action執行完畢,ActionInvocation負責根據struts.xml中的配置找到對應的返回結果result

7、最后通過HTTPServletResponse返回客戶端一個響應。


需要注意的是:

1、調用Action的過程前后,涉及到相關攔截器(Intercepter)的調用

2、Struts 2的核心控制器是FilterDispatcher,有3個重要的方法:destroy()、doFilter()和Init(),可以在Struts 2的下載文件夾中找到源代碼,
執行順序是:init()---->doFilter()-------->destroy()

--從前段到后端的文件走向
從瀏覽器頁面發送請求---到web.xml中,此處配置的是過濾器,對請求來的路徑和請求進行過濾,並經過核心控制器等的一些列處理,產生一個action有關的請求。---進入struts.xml,並在struts.xml中判斷進入哪一個action操作,此時產生一個代理對象,並對該請求進行處理和操作,---然后根據struts.xml中的result返回處理,進行頁面跳轉和相應。

 參考引用:http://blog.sina.com.cn/s/blog_6ef516d0010188hm.html

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM