框架學習:struts1框架的結構和分析

五柳-先生發表於2016-03-21

在上一篇的內容裡,簡單說了說框架的學習,主要講解了什麼是框架,框架的一些相關問題,還有就是如何學習框架。那麼這篇部落格介紹一些常見的框架的結構和分析。

 

        我們所學習的技術框架有很多,例如struts1、struts2、JSF、Spring、SpringMVC、Hibernate、ibatis····在上篇部落格我說了我們可能在開發的路途上會要學習這些框架,我也給出了我對框架學習的幾點:

         

        我們首先要看一下這個框架屬於開發結構中的那一層。因為我們的開發都是要用分層的思想來做的,所以我們第一個就要看看我們開發分層中,各個層次之間有哪些框架。

        

        我們從圖上看到了那些框架屬於哪一層的(這裡還有很多框架沒有涉及到)。之後我們來看一些常用的框架(這個常用相對於個人而言,我這裡所說的常用針對我自己來說,如果這裡我沒有介紹全的話,大家可以到相關的框架官網去查閱一下資料自主學習)。

 

       下面我就簡單的介紹一些我經常使用的框架的結構和一些分析:

 

        Struts框架(分為struts1和struts2):

        一、Struts框架結構圖:

        

         優點:

         1. Struts框架是一個基於mvc的框架,所以它繼承了所有mvc的優點,例如:複用性好,團隊開發分工明確,結構層次分明等

         2. 給程式開發者在servlet層上節約了大量的開發時間,應用程式開發者不再去觸及大量的servlet的編寫,僅僅變換為配置檔案。

 

         二、Struts1框架

        1.框架的結構圖:

         

         2. Struts1框架有五個常用物件:actionservlet、actionmapping、actionform、action、actionforward

               a) Actionservlet是核心控制,URL 地址對映、ActionForm的匹配、 Action 的執行都需要這個類來進行導航

               b) Actionmapping:它們可將請求URI對映到Action類,並且將Action類與ActionFormbean相關聯

               c) Actionform:收集表單資料

               d) Action: 完成所需的業務邏輯,確定要跳轉的頁面

               e) Actionforward:用來封裝轉發路徑的


         3. Struts1框架的執行流程:

         1) 檢索和使用者匹配的ActionMapping例項,如果不存在,就返回請求路徑無效的錯誤資訊

         2)如果ActionForm例項不存在,就建立一個ActionForm的物件,把客戶提交的表單資料封裝到ActionForm物件中。

         3)根據配置資訊決定是否要進行表單驗證,如果需要,就呼叫ActionForm的validate()方法

         4)如果validate()方法放回null,或者並不包含ActionMessage的ActionError物件,就表示驗證成功

         5) ActionServlet根據ActionMapping所包含的對映資訊決定將請求轉發給那個action,如果相應的action例項不存在,就先建立這個action物件,然後再呼叫這個action的excute()方法

         6)action的execute()方法返回一個ActionForword物件,ActionServlet會把客戶請求轉發給ActionForword物件所指向的JSP元件

          7)ActionForword物件指向JSP元件生成動態網頁返回給客戶


         4.優點:和struts框架的優點相同

         5.缺點:

               1) 表現層技術單一:僅能用jsp

               2) 與servletAPI耦合性高,難於測試(httpservletrequest、httpservletresponse)

               3) 嚴重依賴於ServletAPI(繼承action,繼承actionform),與struts1框架耦合性太高

 

        這篇部落格就寫到這裡,如果再寫篇幅可能會過長,對讀者的閱讀造成負面影響,所以我會在下面的部落格中陸續介紹我經常使用的框架,當然我也會在這些同層之間的框架的分析中加入各個框架的區別,當然在適當的地方會畫一些圖片來表示他們之間的知識關聯性,希望讀者能夠我一些建議和意見。

轉載:http://blog.csdn.net/lfsf802/article/details/7877208http://blog.csdn.net/lfsf802/article/details/7877208

相關文章