1. 程式人生 > >struts1和2的區別總結

struts1和2的區別總結

Struts2主要改進是取代了Struts1的Servlet和Action。

1、Struts2的核心框架是當作一個filter來實現其功能的,而Struts1是ActionServlet。這是本質區別。struts1通過servlet來攔截客戶端的請求,因為在web.xml裡定義了一個ActionServlet。struts2通過filter來攔截客戶端的請求,因為在web.xml裡定義了一個FilterDispatcher。struts1 是struts的核心,是基於servlet的API,struts2 是webwork的核心。基於自己的API。

2、 struts1通過actionform來封裝客戶端提交的表單資料,struts2通過在action中定義getter setter來獲取表單資料。

3、在Action上,Struts1都少不了要傳遞Request等引數,還要繼承Action父類,而Struts2只要實現了一個publicString execute()就可以了,這樣Action就可以實現脫離Servlet 測試。

Struts2還提供了攔截器(Interceptot)等Struts1所沒有的技術。

4、執行緒方面,Struts1 Action是單例模式並且必須是執行緒安全的,因為只有Action的一個例項來處理所有請求。要求執行緒必須是安全的。Struts2 Action物件為每一個請求建立一個獨立的物件例項,因此不存線上程安全的問題。Struts1,server啟動後,對使用者的每個request, 後臺controller會mapping其對應的ACTION,如果是首次訪問,則initialize。單例的好處:多個request共享一個ACTION instance,節省了資源,但由於共享,not thread safe,需要額外小心。Struts 2,採用Webwork的核心引擎,每個request會new 出一ACTION instance, 不用考慮thread safe問題。

5、一個簡單的配置檔案struts.xml取代了struts1裡面的strut-config.xml。