Unmi的Struts2學習筆記(一)

來源:互聯網
上載者:User

Struts 從1.1使用到1.3已有多年,都升成2了,卻來了個大變臉,須重新審視 一番了。從頭學習,記下筆記,以要點式。

1. Struts2 與 Struts1 似乎沒什麼血緣關係了,承自於 WebWork,直害 WebWork 不再推出新版本了,原先的 WebWork 使用者只需順其然,即是水道渠成 ;相反 Struts1 的開發經驗對於 Struts2 卻沒有太大的協助。

2. Struts1 的核心控制器是 ActionServlet,而 Struts2 的核心控制器是 FilterDispatcher。Struts2 的業務 Action 會在運行時產生 Action 代理。

3. Struts1 的 Action 須繼承抽象 Action 類,侵入了 Servlet API;而 Struts2 的 Action 可以實現 ActionSupport,或者只要一個純淨的 POJO 來充 當,完全與 Servlet 絕緣。也因此帶來測試性 Struts2 要比 Struts1 強,可把 Struts TestCase 扔到一旁去了。

4. Struts1 在運行時一個 Action 只會產生一個執行個體,而 Struts2 中的 Action 會應對每個請求產生新的執行個體,線上程安全性方面,Struts1 要多些考慮 。

5. Struts1 依靠 ActionForm 來接受資料,它也是依賴於 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 很可愛 ,分別設定當前是開發還是生產模式,以及 struts.xml 改變後是否自動重新加 載,免去了改配置手工重啟應用的必須步驟。

8. Struts2Action 的 execute() 無參,返回的是一個字串,不像 Struts1 Action 的 execute() 有一大串且不說,光是返回 ActionForward,就讓這個 Action 與 Struts1 脫不了干係;還是 Struts2 來得聰明,只返回個中性的 String,反正名字嗎,猛然間這個 Action 也成 POJO 了,複用性增強了,難怪 專門有一書,名為《POJO In Action》。

9. Struts1 的視圖只支援 JSP,這也不怪它,只怨出身太早,那時就只有 JSP 一種表現層。相比,Struts2 更有豔福,能貼近於 FreeMarker、Velocity、 XSLT、PDF 等視圖技術。

10. Struts2 提供了功能強大複雜的標籤庫,統一化為 "s" 首碼。並順應時 代潮流地加入了 AJAX 的支援。還提供了更友好的驗證功能。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.