struts2是輕量級的MVC框架,主要解決了請求分發的問題,重心在控制層和表現層。
輕量級:低侵入性,與業務代碼的耦合度很低,業務代碼中基本不需要import它的包。
MVC框架:struts2實現了MVC,並且提供了一系列API,採用模塊化的方式簡化業務開發過程。
M:模型層的職責是負責業務邏輯。包含兩層:業務數據和業務處理邏輯。比如:實體類,Dao,service都屬於模型層。
V:視圖的職責是負責顯示界面和用戶交互(收集用戶信息)。屬於視圖的組件是不包含業務邏輯和控制邏輯的jsp。
C:控制器是模型層和視圖層之間的橋樑,用於控制流程。比如:在servlet項目中的單一控制器ActionServlet。
Struts和servlet對比:
優點:1.業務代碼解耦,適合團隊開發
將請求分發給不同的處理類,從而降低了業務代碼的耦合度。
2.提高開發效率
提供了一系列的API,可以大大的提升項目的開發效率。比如:使用攔截器自動給請求的參數轉型。
缺點:1.執行效率偏低
需要使用反射,解析xml等技術,會降低執行效率。
2.結構複雜,需要時間瞭解struts2的API。
struts2自身的優勢:
1.健壯性
2.易用性
3.擴展性 struts2使用AOP的思想,使用攔截器來擴展業務控制器。
4.侵入性 struts2對業務代碼依賴性很低。
struts.xml配置的解釋:
package:包,用於對action進行封裝
1.name:包名,根元素下可以有多個包,彼此之間不能重名。
2.extends:繼承 用於指定繼承的包,相當於將繼承包下的配置信息複製到了當前包下。
3.namespace:命名空間 用於規定Action的訪問路徑,必須以/開頭。
<package name="default" namespace="/" extends="struts-default">
action:業務控制器,用於註冊控制器組件(類)
1.name:action的名稱,用於規定Action的訪問路徑
一個包下面可以有多個action,彼此之間不能重名
2.class:業務控制器組件,用於指定業務控制器對應的類
3.method:方法,用於指定訪問當前aciton時要調用的方法
<action name="index" class="com.ctgu.IndexAction">
result:輸出組件,用於轉發,重定向,直接輸出
1.name:名稱 ,一個action下可以有多個result,彼此之間不能重名
2.默認做轉發操作,標記內容設置成轉發的頁面
<result type="redirectAction">
<param name="actionName">HelloWorld</param>
<param name="namespace">/example</param>
</result>
ps:將自己理解的東西整理下來還是很不錯呢