旅行的意義

           

          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中配置全局異常可以對流程中拋出的異常進行統一入口的處理??梢越Y合用戶權限驗證的過濾器使用。

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

          導航

          統計

          常用鏈接

          留言簿(1)

          隨筆分類

          隨筆檔案

          文章分類

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 织金县| 上林县| 博白县| 富川| 开化县| 永新县| 交城县| 新乡县| 麟游县| 曲麻莱县| 富顺县| 大方县| 建阳市| 黑龙江省| 青州市| 崇阳县| 额尔古纳市| 斗六市| 廊坊市| 保德县| 林西县| 洛南县| 同心县| 海原县| 张家界市| 重庆市| 芮城县| 波密县| 龙南县| 鲁甸县| 平和县| 平凉市| 舞钢市| 邯郸县| 新安县| 岳阳县| 贵南县| 榆社县| 建平县| 蚌埠市| 平阳县|