當前位置:編程學習大全網 - 腳本源碼 - 為什麽要用到struts2

為什麽要用到struts2

Apache Struts在2000年5月由 Craig McClanahan 發起,並於2001年7月發布了1.0版本。從技術的角度上講,它是在開發Web程序上的壹次跨越性的進步,但更重要的是,它是在最恰當的時候出現在了人們的眼前。Struts 壹出現便大受歡迎,更成為了以後幾年內web開發的實際標準。

Struts2是Struts的下壹代產品。最初提案Struts Ti所設想的發展方向,在Struts的現有代碼的基礎上是很難完成的。在發起提案的時候,Patrick Lightbody 把多個不同的Web框架的領導者邀請到了壹起,希望大家能夠協力完成壹個通用的框架。但因種種原因,只有WebWork和Struts走到了壹起。Struts2吸取了Struts1.x和WebWork的各種優點,更改了壹些不足的地方,比如移走了原來WebWork中的IOC實現,引入Spring的IOC實現等。Struts2的目標就是----使Web開發更加容易。

今天擺在web開發人員面前的是眾多的web開發框架,有些來自開源社區,有些來自商業公司,以滿足各種web開發需要,到目前為止,有最少超過40種的web開發框架,那我們為什麽要選擇Struts2呢?下面列出壹些Struts2的特性。

基於pojo易於測試

在Struts1.x中我需要Mock出這兩個Http對象,使我們很難編寫Action的單元測試,與Struts1.x相比,Struts2的Action 不再依賴於HttpServletRequest和HttpServletResponse對象,使我們能夠更方便的針對Action編寫單元測試。Struts2的單元測試看起來就像這樣:

public void testEnrol(){

userinfoAction.setUsername("wangwu");

userinfoAction.setUserPassword("123456");

userinfoAction.setMail("");

String result = userinfoAction.enrol();

assertEquals("success",result);

}

與Spring的集成

與Struts1.x相比,Struts2不必再自己編寫singleton,進壹步的降低了程序間的耦合性,就Struts2內部本身而言,降低了框架本身的偶合性。

更加的模塊化

與Struts1.X 相比,Struts2更加的模塊化,可以輕松將配置信息按功能界限拆分成多個文件,便於管理和團隊協作開發。

基於插件的框架

Struts2是壹個基於插件的框架,社區中提供了很多實用的插件,比如jfreechat/json等等,使用這些插件可以簡化我們的開發,加快開發進度。

大量的攔截器

Struts2本身提供了大量的可重用的攔截器,比如類型轉換攔截器,很多時候我們從頁面取得參數,這個時候它是String類型的,我們需要手動的把它轉成Long型的或是Integer型的再使用,在Struts2中妳不必這樣做,Struts2中已經幫妳做了這些事情了。當然我們也可以實現自定義的攔截器,比如:權限檢查攔截器來做訪問控制。

慣例大於配置

慣例大於配置是Struts2的架構目標,比如我們需要對頁面輸入的數據進行驗證,只需取壹個跟Action同名的xxAction-validation.xml文件,Struts2就會自動的進行驗證。還有很多,比如國際化資源文件等。

多種視圖的支持

多種視圖的支持:jsp,freemarker,Veloctiy,只要妳願意,妳甚至可以通過輕松的改造讓它支持pdf,同壹個項目中妳可以支持多種視圖。

申明式的異常處理

Struts2提供了方便的申明式異常處理,它看起來像這樣:

<global-results>

<result name="licenceException">/WEB-INF/pages/client/licenceException.jsp</result>

<result name="payException">/WEB-INF/pages/client/unPay.jsp</result>

<result name="accessDeny">/WEB-INF/pages/client/accessDeny.jsp</result>

</global-results>

<global-exception-mappings>

<exception-mapping exception="com.yeebobo.yeebox.web.licence.LicenceException" result="licenceException"/>

<exception-mapping exception="com.yeebobo.yeebox.web.licence.PayException" result="payException"/>

</global-exception-mappings>

如果妳以前是WebWork的用戶,那麽妳會覺得Struts2和WebWork實在是太像了,當然如果妳以前是Struts1.x的忠實用戶,也能夠快速的過渡到Struts2的開發中來,如果妳重來沒有用過任何框架,妳也可以通過快速的學習,加入到Struts2的應用開發中來,因為它足夠的簡單。

  • 上一篇:求帶有魔幻的歐美電影,最好是英國的或迪士尼電影,要真人的。
  • 下一篇:HANTEL是什麽牌手機
  • copyright 2024編程學習大全網