筆者已經毫不懷疑struts 2x比struts 1x強大,也不辯解struts 1x與2x各自的優點,因為在我看來
struts 2x繼承了struts 1x的優秀特性,並且通過struts在專案中應用的累積,發生了不小的更適用的新功能
。下面讓我結合自己的專案應用來揭秘struts 2x的這些偉大之處。
1.首先,struts2是以webwork 2作為基礎發展出來,它具有ioc模式,在處理action過程中呼叫的方法(
「execute」方法)是不帶引數的,酷吧。
e.g.
struts1x
struts2x
public string execute()
**簡潔多了,看著真舒心。不過下面這段**看上去還真不像「execute」方法,跟普通的方法差不多。
**此處留神** struts2x返回的物件不是actionforward而是string,對程式設計師又友善了很多。
**此處留神** struts2x不像struts1x帶有引數actionform form,那頁面資料如何得到了,yes這是重點,
very cool,
使用struts 2.0,表單資料的輸入將變得非常方便,和普通的pojo一樣在action編寫getter和setter,然後在
jsp的ui標誌的name與其對應,在提交表單到action時,我們就可以取得其值。多完美的框架,試想不光是
action乾淨多了,struts-config.xml沒有actionform後會減少很多好,so cool。
**此處留神** 你也許要問要取得servlet api中的一些物件怎麼辦,畢竟struts2x的方法沒有那些引數。
非常好的問題,此處我們有兩種辦法,都是在全域性角度,不用每個execute逐一考慮。
1.org.apache.struts2.servletactioncontext類
當然也可以使用com.opensymphony.xwork2.actioncontext類,actioncontext.getcontext().getsession()。
以上都是靜態方法來獲得我們想要的引數,最為方便簡潔,還能通過ioc取得,這兒不多介紹。
更令人興奮的一點
struts2中宣告為public string methodname() 方法,都能通過配置來呼叫action。
public string testaction()
想想使用struts1x時,當乙個頁面有去往兩個提交方向的時候,我們使用dispatchaction時時多麼繁瑣,
struts2x已經不存在此現象。
2.看看兩者的配置
struts1.x
action
org.apache.struts.action.actionservlet
config
/web-inf/struts-config.xml
config/ivr
/web-inf/struts-config-ivr.xml
config/wap
/web-inf/struts-config-wap.xml
debug
3detail30
action
*.do
作為乙個servlet申明在工程的web.xml中,跟工程耦合比較緊密
再看看struts2.x
struts
org.apache.struts2.dispatcher.filterdispatcher
struts
/*在工程的web.xml中申明成乙個filter,再就是乙個攔截目標的配置,其他的屬性都在struts.properties
3.接著,才是更為先進的改動。曾經引以為豪的struts的tag,現在也發生了翻天覆地的變化。
struts1x
<%@ taglib uri="/tags/struts-bean" prefix="bean" %>
<%@ taglib uri="/tags/struts-html" prefix="html" %>
<%@ taglib uri="/tags/struts-logic" prefix="logic" %>
struts2x
<%@ taglib prefix="s" uri="/struts-tags" %>
簡潔吧,但功能呢,更為強大,它甚至可以直接支援jstl、groovy和velcity。之前不乏同仁拿struts tag比
較jstl,現在看來完全沒有必要了。
struts2x還有很多貼心的功能,之前我們頭疼的頁面多次提交問題,現在有了新標籤來處理。
struts2x的檔案上傳也值得稱道。struts2x的***那是非常的好用。validation也有不小的變化。
總之,strut的優良ruts框架的優良傳統繼續延續著……
struts2 x的基本配置
1.先配置xml struts2 org.apache.struts2.dispatcher.ng.filter.strutsprepareandexecutefilter 2.在src目錄下面建立並配置struts.xml 之前要在window preference xmlcatalog中新增 w...
Urlrewrite與Struts2 x結合使用
最近改版系統,由struts1.x公升級為struts2.x,在使用時urlrewrite這個時,直接將xml檔案及jar複製過來,然後就開始執行,但好遺憾的時,沒有起到作用,於是上網查,查到一大堆的資料,基本上都是說加多兩個配置選項,於是一樣的照抄過,所以我的web.xml檔案的配置如下 過濾器部...
Annotation對Struts2 x的支援
struts2.x如要想要使用annotation,則需要匯入asm 3.3.jar asm commons 3.3.jar和struts2 convention plugin 2.3.37.jar。並且修改web.xml檔案,使其支援annotation。在web.xml檔案裡的filter元素裡...