Struts2比Struts1已經有了很大的進步,優勢不少,其中主要兩個是:對框架API和ServletAPI的依賴減小,可擴展性提升。 編程
Struts2的Action能夠實現框架提供的Action接口也能夠不實現這個接口。實際上框架Strut2的Action的要求很低,只要一個類,包含一個無參的、返回值類型爲String的方法就行。其實Struts2的Action就是一個POJO。若是用戶寫一個類實現框架提供的Action接口或者繼承框架提供的ActionSupport類, 則能夠利用框架中的其餘一些功能。好比在,Action接口中定義了一些常量,這些常量一般做爲返回值共處理方法調用。 框架
因爲Struts2的Action對框架API和Servlet API的依賴減小,所以可測程度大大提升。 jsp
Struts2的可擴展性提升了。Struts2的核心jar包中由一個struts-default.xml文件,在該文件中設置了一些默認的bean,resultType類型,默認攔截器棧等,全部這些默認設置,用戶均可以利用配置文件更改,能夠更改成本身開發的bean,resulttype等。 插件
所以用戶開發了插件的話只要很簡單的配置就能夠很容易的和Struts2框架融合,這實現了框架對插件的可插拔的特性。 xml
面向切面編程的思想在Strut2中也有了很好的體現。最重要的體現就是攔截器的使用。攔截器就是一個一個的小功能單位,用戶能夠將這些攔截器合併成一個大的攔截器,這個合成的攔截器就像單獨的攔截器同樣,只要將它配置到一個、Action中就能夠。 繼承
我認爲Struts2仍是有一些不足之處的,我簡單例舉一下,不知道算不算缺點。 接口
一就是在Struts2中Action中取得從jsp中傳過來的參數時仍是有點麻煩。能夠爲Struts2的Action中的屬性配置上Getter和Setter方法,經過默認攔截器,就能夠將請求參數設置到這些屬性中。若是用這種方式,當請求參數不少時,Action類就會被這些表單屬性弄的很臃腫,讓人感受會很亂。還有Action中的屬性不但能夠用來得到請求參數還能夠輸出到Jsp中,這樣就會更亂。假設從JSP1中得到了參數money=100000,可是這個Action還要輸出到JSP2中,可是輸出的格式卻不一樣,money=100,000,這樣這個Action中的money中的值就變了。 開發
關於校驗那一塊,感受太煩亂,也太細化了,若是校驗出錯的只能給用戶提示一些信息。若是有多個字段,每一個字段出錯時返回到不一樣的畫面,這個功能在Strut2框架下藉助框架提供的校驗邏輯就不容易實現。 io