旅行的意義

           

          Struts2深入探索及雜項

          • 缺省參數的配置:在classes/struts.properties中覆蓋,其中如果需要struts支持中文,需要覆寫struts.i18n.encoding=GBK;也可以在struts.xml中使用<constant>來指定。兩種方式最好始終只使用一種。
          • 團隊開發:
            • 名字空間:在package中可以定義namespace,便于團隊分模塊開發,form提交的時候需要提交到namespaceName/actionName中,如果在名稱空間下面不存在指定的action,則程序會嘗試在根目錄下去尋找同名的action。
            • struts.xml的內容分離:在struts.xml中使用<include file="filename" />來引入子文件,在項目比較大的情況下這種配置文件的部署方式條理比較清晰。
          • 國際化:message.properties中定義了全局的信息鍵值對,國際化中支持中文的文件應該命名為message_zh_CN.properties,同時還存在包級別的message和類級別的message,分別命名為package_zh_CN.properties和className_zh_CN.properties,優先級別依次遞增。

              使用這些鍵值對的方法:

            • Action中直接使用String getText(String key,String[] param)
            • validation.xml中<message key="keyname" />
            • jsp頁面中也通過<s:textfield key="keyname" />來指定
          • 防止重復提交表單-tokenfilter,token需要顯式包含在filter-stack中。同時在form中增加<s:token>控件。如果表單被重復提交,則Action返回一個"invalid.token"的result
          • 模型驅動和屬性驅動:使用頁面控件和Action屬性直接關聯注入的方式是屬性驅動,使用純業務類,并通過Action取得前臺輸入數據則稱之為模型驅動。模型驅動能提供更好的解耦。在struts中是使用了一個名為modelDrivenFilter的過濾器來實現的,Action需要實現com.opensymphony.xwork2.ModelDriven<T>接口,覆寫getModel()方法并返回一個T類型的實例。不過遺憾的是,這個模型似乎不能和spring,hibernate等框架很好的結合。
          • com.opensymphony.xwork2.Preparable接口提供了一種在進入Action之前執行業務邏輯的可能性。實現了該接口的Action會在所有該Action的邏輯之前執行覆蓋上述接口的prepare()方法內的邏輯。
          • <s:fielderror><s:param>name可以指定到底是哪個控件的錯誤.
          • struts中訪問servlet容器底層內容:
            • ActionContext類能獲取HttpServletRequest對象,進而獲得session內容
            • ServletActionContext類提供了一些靜態函數,能獲得Request及Response對象,從而可以設置目標頁面的request內容及cookie內容
            • ServletRequestAware、ServletResponseAware、ServletContextAware接口可以獲取注入的響應容器對象
          • 動態方法調用:
            • 頁面指定:在頁面form的action中寫ActionName!MethodName.action的話,就會調用相應Action對應類中的名為MethodName的方法,而不調用Execute()方法。
            • 通配符:在struts.xml中配置Action可以使用通配符<Action name="*Login" class="LoginAction" method={1}>,則在頁面上如果提交到"helloLogin"的話,會執行LoginAction中的hello方法。這種方法看起來比較靈活,一次配置可以解析多個Action,但是用起來容易出錯,而且過度使用可能會有多個Action被匹配的情況,需要慎用。
          • 全局異常配置:在struts.xml中配置全局異常可以對流程中拋出的異常進行統一入口的處理。可以結合用戶權限驗證的過濾器使用。

          posted on 2009-02-13 08:34 bacon 閱讀(1726) 評論(0)  編輯  收藏 所屬分類: J2EE

          導航

          統計

          常用鏈接

          留言簿(1)

          隨筆分類

          隨筆檔案

          文章分類

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 闻喜县| 灵山县| 高阳县| 凌源市| 房产| 宁明县| 崇文区| 阳高县| 扎赉特旗| 深圳市| 南阳市| 社旗县| 江安县| 嘉祥县| 罗源县| 武安市| 彰武县| 方正县| 平安县| 平舆县| 芮城县| 大英县| 鄂托克旗| 晋州市| 永福县| 商都县| 资中县| 沙河市| 宁国市| 九龙坡区| 阜阳市| 万州区| 灵武市| 灵丘县| 柳河县| 青田县| 海林市| 定南县| 图们市| 喀喇沁旗| 丰镇市|