Struts 從1.1都升成2了,要記錄一下,學習起來會方便一些:
1. Struts2 與 Struts1 似乎沒什么血緣關(guān)系了,承自于 WebWork,直害 WebWork 不再推出新版本了,原先的 WebWork 使用者只需順其然,即是水道渠成;相反 Struts1 的開發(fā)經(jīng)驗對于 Struts2 卻沒有太大的幫助。
2. Struts1 的核心控制器是 ActionServlet,而 Struts2 的核心控制器是 FilterDispatcher。Struts2 的業(yè)務 Action 會在運行時生成 Action 代理。
3. Struts1 的 Action 須繼承抽象 Action 類,侵入了 Servlet API;而 Struts2 的 Action 可以實現(xiàn) ActionSupport,或者只要一個純凈的 POJO 來充當,完全與 Servlet 絕緣。也因此帶來測試性 Struts2 要比 Struts1 強,可把 Struts TestCase 扔到一旁去了。
4. Struts1 在運行時一個 Action 只會生成一個實例,而 Struts2 中的 Action 會應對每個請求生成新的實例,在線程安全性方面,Struts1 要多些考慮。
5. Struts1 依靠 ActionForm 來接受數(shù)據(jù),它也是依賴于 Servlet API ,并非普通的 JavaBean,而 Struts2 可在 Action 屬性中獲取請求的屬性,當然也能封裝在一個獨立的 POJO 中。不過提醒一下,在 Struts1.3 中也可以用 POJO 來接受請求屬性,但使用起來有點煩瑣。
6. Struts2 使用了新的 OGNL 的表達式語言,可以訪問值棧,在對集合和索引屬性的支持上功能更強大。
7. Struts1 的配置文件只需 struts-config.xml;Struts2 的配置文件有 struts.xml 和 struts.properties。struts.properties 中有兩個 struts.devMode = fase 和 struts.configuration.xml.reload = true 很可愛,分別設(shè)置當前是開發(fā)還是生產(chǎn)模式,以及 struts.xml 改變后是否自動重新加載,免去了改配置手工重啟應用的必須步驟。
8. Struts2 Action 的 execute() 無參,返回的是一個字符串,不像 Struts1 Action 的 execute() 有一大串且不說,光是返回 ActionForward,就讓這個 Action 與 Struts1 脫不了干系;還是 Struts2 來得聰明,只返回個中性的 String,反正名字嗎,猛然間這個 Action 也成 POJO 了,復用性增強了,難怪專門有一書,名為《POJO In Action》。
9. Struts1 的視圖只支持 JSP,這也不怪它,只怨出身太早,那時就只有 JSP 一種表現(xiàn)層。相比,Struts2 更有艷福,能貼近于 FreeMarker、Velocity、XSLT、PDF 等視圖技術(shù)。
10. Struts2 提供了功能強大復雜的標簽庫,統(tǒng)一化為 "s" 前綴。并順應時代潮流地加入了 AJAX 的支持。還提供了更友好的驗證功能。
posted on 2010-06-01 09:39
胖胖泡泡 閱讀(353)
評論(0) 編輯 收藏