旅行的意义

 

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 阅读(1708) 评论(0)  编辑  收藏 所属分类: J2EE


只有注册用户登录后才能发表评论。


网站导航:
 

导航

统计

常用链接

留言簿(1)

随笔分类

随笔档案

文章分类

搜索

最新评论

阅读排行榜

评论排行榜