注册 | 登录 忘记密码? 51cto首页 | 博客 | 论坛 | 招聘
热点文章 IB客座主编(四)美国西蒙公..
 帮助

Action"零配置"及注意点


2008-03-10 18:37:54
 标签:Struts2 filter   [推送到技术圈]

版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://winnow.blog.51cto.com/223664/65045
        通常,MVC框架都需要Web应用加载核心控制器,而对于Struts2来说,需要加载的就是struts2的核心控制器"FilterDispatcher"。只要Web应用加载了FilterDispatcher,FilterDispatcher将会加载应用的Struts2框架。
        加载FilterDispatcher即在web.xml中配置FilterDispatcher,代码如下
<filter>
        <filter-name>struts2</filter-name>
        <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
        <init-param>
                   <param-name>actionPackages</param-name>
                   <param-value>test.action</param-value>
       </init-param>
</filter>
<filter-mapping>
        <filter-name>struts2</filter-name>
        <url-pattern>/*</url-pattern>
</filter-mapping>
 
        在通常的Struts2 FilterDispatcher配置中,可能没有代码中的蓝色部分——actionPackages参数的配置。actionPackages参数的设置就是为Struts2的所谓"零配置"服务的,param-value中的值代表一个包空间,如果有多个包,则以逗号隔开。
         Struts2框架将会扫描这些包下面的Action类,来支持与Action匹配的逻辑名找到对应的Action。如一个action的实体类名为TestAction,那么Test.action, Test(这种写法有点像servlet), test.action都可以找到TestAction(并不需要在struts.xml中配置)。
          既然我们不在struts.xml中配置action,那么action的result又怎么指定呢,Struts2同样有自己的方法——在Action类中直接加上result注解(写在Action类的上方):
 @Results({  
    @Result(name="test1", type=NullResult.class, value = "/test1.jsp", params = {}),  
    @Result(name="test2", type=NullResult.class, value = "/test2.jsp", params = {})  
})
 
         那么,如果我们同时配置了struts.xml,结果将会如何呢,逻辑名到底是使用"零配置"和注解result,还是使用struts.xml的配置呢。
         同样是上面的例子,如果我们在struts.xml同时配合了逻辑名Test,那么使用Test.action,将会使用struts.xml中的配置。看起来xml的配置可以覆盖"零配置",这样很方便不是吗?但是这小瞧了Struts2"无敌的"匹配功能,当我们使用小写test配置struts.xml时,test.action将会使用"零配置"而不是struts.xml,崩溃。。。
 
 
         这个故事告诉我们,规范的事情很重要。通常情况下我都是自己配置struts.xml,因为写的应用也没那么夸张,一般就几十个action吧,再说耦合度也低,配置拦截器和异常处理也方便(这两个东西和"零配置"是怎么融合的,我还没试过),不知道大伙儿平常开发是咋样的。

本文出自 “winnow” 博客,请务必保留此出处http://winnow.blog.51cto.com/223664/65045





    文章评论
 
2008-03-11 09:17:11
恩 不错 支持一下

2008-03-19 09:52:01
00000000

 

发表评论

昵   称:
验证码:  点击图片可刷新验证码  博客过2级,无需填写验证码
内   容: