struts2是在struts1和WebWork技術的基礎上進行合并后的全新框架。其核心是WebWork庆揩。
1兔毙、本質區(qū)別:struts2的核心是基于Filter實現的尘颓,而struts1的核心是ActionServlet。struts2在web.xml中定義了一個FilterDispatcher(StrutsPrepareAndExecuteFilter)來攔截客戶端的請求主胧,而struts1在web.xml中定義了一個ActionServlet來攔截客戶端的請求叭首。
2、線程方面:struts2采用WebWork的核心踪栋,對于每一個request請求都會創(chuàng)建一個Action實例焙格,沒有線程安全問題。而struts1中Action是單例模式并且必須是線程安全的(因為只有一個Action實例處理所有請求己英,所以必須是線程安全的)间螟,單例的好處:多個request共用一個Action實例,節(jié)省了資源损肛,但由于共用厢破,線程不安全(not thread safe)。
3治拿、Action實現類方面:struts1的Action在實現時必須繼承Action類或者Action的子類摩泪,而struts2的Action在實現時可以不用實現任何類和接口,也可以實現Action接口和其它接口劫谅,實現了可選和定制服務见坑。同時struts2提供了一個ActionSupport基類實現常用的接口,但是不是必須要實現的捏检。只要實現了public String execute()方法的POJO類都可以當做struts2的Action
4荞驴、struts2提供了攔截器(Interceptor)等struts1沒有的技術。