【struts2】Struts2的系統架構


  Struts2的官方文檔里附帶了Struts2的架構圖,下面這張圖上展示了Struts2的內部模塊,以及它們的運行流程。

  這張圖上分了好多塊,彼此之間相互聯系,先瀏覽一下各塊的名字,再留心一下運行圖最下面的圖例,分為四種顏色。

  • 橙色是Servlet Filters,過濾器鏈,所有的請求都要經過Filter鏈的處理。
  • 淺藍色是Struts Core,Struts2的核心部分,Struts2中已經做好的功能,在實際開發中不需要動它們。
  • 淺綠色是Interceptors,Struts2的攔截器。Struts2提供了很多默認的攔截器,可以完成日常開發的絕大部分工作;當然,也可以自定義攔截器,用來實現具體業務需要的功能。
  • 淺黃色是User Created,由開發人員創建的,包括struts.xml、Action、Template,是每個使用Struts2來進行開發的人員都必須會的。

  各模塊說明

  架構圖上有好多東西,接下來逐個擊破。首先看看它們各自是做什么的,跟着圖上的箭頭一個一個來看:

  • FilterDispatcher是整個Struts2的調度中心,根據ActionMapper的結果來決定是否處理請求,如果ActionMapper指出該URL應該被Struts2處理,那么它將會執行Action處理,並停止過濾器鏈上還沒有執行的過濾器。
  • ActionMapper提供了HTTP請求與action執行之間的映射,簡單點說,ActionMapper會判斷這個請求是否應該被Struts2處理,如果需要Struts2處理,ActionMapper會返回一個對象來描述請求對應的ActionInvocation的信息。
  • ActionProxy是一個特別的中間層,位於Action和xwork之間,使得我們在將來有機會引入更多的實現方式,比如通過WebService來實現等。
  • ConfigurationManager是xwork配置的管理中心,通俗的講,可以把它看做struts.xml這個配置文件在內存中的對應。
  • struts.xml是Stuts2的應用配置文件,負責諸如URL與Action之間映射的配置、以及執行后頁面跳轉的Result配置等。
  • ActionInvocation:真正調用並執行Action,它擁有一個Action實例和這個Action所依賴的攔截器實例。ActionInvocation會執行這些攔截器、Action以及相應的Result。
  • Interceptor(攔截器):攔截器是一些無狀態的類,攔截器可以自動攔截Action,它們給開發者提供了在Action運行之前或Result運行之后來執行一些功能代碼的機會。類似於我們熟悉的javax.servlet.Filter。
  • Action:動作類是Struts2中的動作執行單元。用來處理用戶請求,並封裝業務所需要的數據。
  • Result:Result就是不同視圖類型的抽象封裝模型,不同的視圖類型會對應不同的Result實現,Struts2中支持多種視圖類型,比如Jsp,FreeMarker等。
  • Templates:各種視圖類型的頁面模板,比如JSP就是一種模板頁面技術。
  • Tag Subsystem:Struts2的標簽庫,它抽象了三種不同的視圖技術JSP、velocity、freemarker,可以在不同的視圖技術中,幾乎沒有差別的使用這些標簽。

  參考資料:http://my.oschina.net/exit/blog/153385


免責聲明!

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



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