如果希望使用 struts2 的注解功能,必须使用一个包 struts2-convention-plugin-2.1.8.1.jar ,我使用的环境是 struts2.1.8.1 。如果你使用了不同的版本,找名字就行。
在以上所述的 jar 文件中定义了一系列的注解,其中比较主要的是:
- @ParentPackage ,这个注解对应了 xml 文件中的 package 节点,它只有一个属性叫 value ,其实就是 package 的 name 属性;
- @Namespace ,命名空间,也就是 xml 文件中 <package> 的 namespace 属性;
-
@Action ,这个注解对应 <action> 节点。这个注解可以应用于 action 类上,也可以应用于方法上。这个注解中有几个属性:
- value() ,表示 action 的 URL ,也就是 <action> 节点中的 name 属性;
- results() ,表示 action 的多个 result ;这个属性是一个数组属性,因此可以定义多个 Result ;
- interceptorRefs() ,表示 action 的多个拦截器。这个属性也是一个数组属性,因此可以定义多个拦截器;
- params() ,这是一个 String 类型的数组,它按照 name/value 的形式组织,是传给 action 的参数;
- exceptionMappings() ,这是异常属性,它是一个 ExceptionMapping 的数组属性,表示 action 的异常,在使用时必须引用相应的拦截器;
-
@Result ,这个注解对应了 <result> 节点。这个注解只能应用于 action 类上。这个注解中也有几个属性:
- name() ,表示 action 方法的返回值,也就是 <result> 节点的 name 属性,默认情况下是【 success 】;
- location() ,表示 view 层文件的位置,可以是相对路径,也可以是绝对路径;
- type() ,是 action 的类型,比如 redirect ;
- params() ,是一个 String 数组。也是以 name/value 形式传送给 result 的参数;
实际上, struts2 中的主要注解就是这些,当然了,还有上面提到的 @interceptorRef 和 @exceptionMapping ;基本上,掌握了这些注解就可以了。
但是如果想让这些注解真正工作,必须在配置文件增加几个常量的定义:
- struts.convention.default.parent.package :这个常量表示缺省的包名是什么,因为在实际应用中,我们常常定义一个缺省的包,这个包中定义了一大堆的拦截器等等,然后其他的包继承自这个包。这个常量可以配也可以不配;
- struts.convention.package.locators :这个常量表示你的 action 类的 java 包的包名的后缀是啥:比如 action 。这个常量也可以不配;
- struts.convention.package.locators.basePackage :这个常量表示你的 action 类的 java 包 package 的名字是啥;这个常量也可以不配;
本文介绍如何通过Struts2的注解功能简化配置,包括核心注解如@ParentPackage、@Namespace、@Action等的使用方法及必要的配置文件设置。
309

被折叠的 条评论
为什么被折叠?



