App下載
話題 首頁 > JSP 教程 > JSP 教程話題列表 > 詳情

struts2和struts1有何區(qū)別

精華
如此輕盈 2016-08-30 05:49:59 瀏覽(5071) 回復(fù)(5) 贊(0)
關(guān)于struts的問題
struts

回答(5)

水沐年華 2017-04-18

struts2不是struts1的升級,而是繼承的webwork的血統(tǒng),它吸收了struts1和webwork的優(yōu)勢。

Struts1和Struts2的區(qū)別和對比:

1、Servlet依賴性由于Action在被調(diào)用的時候,HttpServletRequest和HttpServletResponse被傳遞到execute()方法,struts1的Action對Servlet API有依賴 性,但如果在struts2中,Action就不會對容器有依賴性了,因為struts2的Action是由簡單的POJO組成,在struts2中,Servlet上下文以簡單的Map的形式表現(xiàn)出來,這使得Action可以得到獨(dú)立的測試,如果需要,struts2也可以訪問原始的請求與響應(yīng)。

2、 Action類struts1要求action類繼承一個基類,struts2 Action要求繼承ActionSupport基類

3、驗證struts1和struts2都支持通過validate方法的手動驗證,struts1使用ActionForm中的validate方法,而struts2支持通過Validate方法和Xwork校驗框架的手動驗證

4、線程struts1是單例模式的并且必須是線程安全的,因為僅有一個Action的實例來處理所有請求,而struts2為每一個請求產(chǎn)生一個實例

5、易測性struts1一個主要問題是execute方法暴露了Servlet API,一個叫Struts TestCase的第三方擴(kuò)展,提供了一個struts1測試用的模擬對象,但是struts2中,Action可以經(jīng)由創(chuàng)建Action實例,設(shè)置屬性,和調(diào)用方法來得到測試

6、獲取輸出struts1使用ActionForm來捕獲輸入,而所有的ActionForm需要繼承一個框架依賴的基類,由于javabean不能當(dāng)作ActionForm來用,開發(fā)人員不得不創(chuàng)建冗繁的類來獲取出入,不過struts2用Action屬性,這避免了需要創(chuàng)建第二個輸入對象

7、表達(dá)式語音struts1與JSTL整合,struts2不僅支持jstl 還支持OGNL

8、將綁定值到視圖中在視圖層,struts1使用標(biāo)準(zhǔn)的JSP來綁定對象到頁面上下文來訪問,然而struts2使用一種叫值棧的技術(shù),這使得標(biāo)簽可以訪問值而不需將視圖與正在呈遞的對象類型連接起來,值棧允許重用一些屬性名相同但類型不同的視圖類型

9、類型轉(zhuǎn)換通常struts1的ActionForm屬性都是string類型的,struts1使用Commons-Beanutils進(jìn)行類型轉(zhuǎn)換,這些針對每一個類的類型轉(zhuǎn)換無法為每一個實例配置,然而struts2使用OGNL來進(jìn)行類型轉(zhuǎn)換,框架包含了針對基礎(chǔ)類型,常見對象類型與原始類型的轉(zhuǎn)換器

10、Action執(zhí)行控制struts1支持每一個模塊的請求處理器的分離,但是同一模塊下的所有Action必須共享相同的生命周期,struts2支持通過攔截器棧為每一個Action創(chuàng)建不同的生命周期,自定義??梢砸曅枰獙Σ煌腁ction使用

一筆荒蕪 2018-05-31

留名留名!!!,同樣的問題,看看咋結(jié)局!!!

1144100656 2018-05-31

大神在哪里呀,大神在哪里呀,大神在哪里呀.

1152696398 2018-05-31

剛學(xué)習(xí)程序,過來學(xué)習(xí)學(xué)習(xí)!!!!...

要回復(fù),請先登錄 或者注冊