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