Struts2要注意問題

2021-08-30 23:47:56 字數 1576 閱讀 3317

struts2是從webwork衍生出來的框架,與struts1有很大的不同。

它的主要優點:

1.它沒有和servletapi緊密耦合,屬於一種無侵入式的設計,可以方便地進行設測試。   

2.struts2擁有***的機制,可以實現一種環繞通知的aop。

3.struts2提供了型別轉換器,我們可以把特殊的請求引數轉換成需要的型別。

4.struts2提供支援多種表現層技術

5.struts2的輸入校驗可以對指定方法進行校驗

struts2的處理流程簡述(具體流程參見另一篇文章:struts2原始碼簡析)

請求到來之後,首先,經過strutsprepareandexecutefilter過濾,這是所有struts2請求入口。然後,請求會經過各種***(interceptor)完成pre-process,有的是struts2預設自帶的***,有的是自定義的。接下來執行action中指定執行的方法(預設是execute),再執行***的post-process,在次期間,無論是***,還是action,都有可能會影響到最終的result。最後,再對result解析,找到合適的檢視並用輸出資訊物件與檢視繫結,返回給使用者。

使用struts2的注意事項:

1.需要給action注入屬性:比如,處理檔案上傳的時候,檔案儲存的目錄。可以把這個引數通過struts.xml中的標籤的子標籤來為action注入屬性。

2.struts2對action的管理和struts1有很大不同。struts1的action是單例,建立出action就放入快取,以供重複使用;而struts2的action是原型,為每乙個request建立乙個action。

3.雖然struts2提供了檔案上傳的功能,可以通過設定常量struts.multipart.    maxsize來設定上傳檔案的大小。但是,web並不適合上傳大檔案,如果要上傳大檔案,可以考慮開發socket網路傳輸軟體來實現。

4.在為struts2的單獨action設定***的時候,在標籤下設定標籤引用***,但是如果直接這麼寫,struts2預設提供的***就會失效。解決方法:定義乙個***棧。

5.利用struts2進行校驗的時候,無論是校驗錯誤還是型別轉換錯誤,都可能會轉入「input」檢視。

6.如果為某個action提供了全方法校驗和指定方法校驗,先讀全部校驗檔案,再讀指定方法校驗檔案。struts2會將校驗檔案的校驗規則彙總(使用後面檔案的校驗規則,即制定方法的校驗規則),用於全部action方法。如果存在繼承關係,例如:useraction繼承baseaction,則先搜尋父校驗規則,再搜尋子校驗規則。

7.可以使用ognl訪問valuestack中的值,不用加「#」,el表示式也可以訪問,因為struts2對request物件做了增強處理,使它能夠訪問值棧。

8.struts2中的標籤中的value屬性預設不會按照ognl表示式執行,需要加上「%{}」來處理。

9.在使用model來進行引數傳遞

的時候,model不僅要有對應的setter,還有有對應的getter。如:action中有乙個user類的域,那麼action中要有setuser和getuser方法。

10.在進行聲名式的異常處理時,可以使用ognl在錯誤頁面顯示錯誤資訊

struts 2 使用注意問題

一 標籤判斷字串相等 錯誤寫法 男 正確寫法 男 男 二 struts2 textfield標籤的格式化 1.在struts.properties中插入struts.custom.i18n.resources globalmessages 2.src目錄建立globalmessages zh cn....

Struts2接收陣列時需要注意的問題

當表單中存在陣列時 假定依次輸入了1,2,3 form input type text name param input type text name param input type text name param input type submit form 表單提交傳遞的字串為 param 1...

struts2整合json要注意的問題

昨天struts2整合json,一直出錯 發現我已經在struts.xml中繼承了json default了啊,後來發現原來是由於沒有引入對應的包,在此做下總結。1 加入對應的包 匯入 commons beanutils 1.7.0.jar ezmorph 1.0.3.jar json lib 2....