struts2.1-annotation

来源:互联网 发布:win7网络发现自动关闭 编辑:程序博客网 时间:2024/04/29 07:12

Struts2.1 Annotation 注解配置也叫ZeroConfiguration(零配置),它省去了写xml文件的麻烦,可以直接在类叫进行配置,不用在java文件和xml文件中来回切换。

annotation所需要的包,在Struts2.1中是struts2-codebehind-plugin.jar 这个包

第一步在web.xml里面写上这样的配置

 

viewplaincopyto clipboardprint?
  1. <filter>  
  2.     <filter-name>struts2</filter-name>  
  3.     <filter-class>  
  4.     org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter  
  5.     </filter-class>  
  6.         <!-- 这里配置struts的action扫描路径 -->  
  7.     <init-param>   
  8.         <param-name>actionPackages</param-name>   
  9.              <param-value>你的action的包位置</param-value>   
  10.     </init-param>   
  11.     <init-param>  
  12.         <param-name>encoding</param-name>  
  13.         <param-value>UTF-8</param-value>  
  14.     </init-param>  
  15. </filter>  

 

第二步建立你的Action 

 

viewplaincopyto clipboardprint?
  1. <param-value>你的action的包位置</param-value>  

 

根据你上面的配置,把所有的action类放在“你的action的包位置”.action这个包下面,并建立你的Action类。

 

struts2annotation所建action命名规则:去掉类名的Action部分。然后将将每个分部的首字母转为小写,用’-’分割。

   a)举例:TestAction,那么访问的时候就是test.action,或者test.do或者test(这个根据你的后缀配置来定);

   b)举例:StudentListAction,那么访问的时候就是student-list.action或者同上。

注:比如像StudentListAction类,如果你在地址栏输入StudentList是访问不到的,必须输入student-list

 

第三步,写上Action类的Annotation

 

下面举一个简单的例子

 

viewplaincopyto clipboardprint?
  1. @Namespace("/test" 
  2. @Result(name="success"location "/test/role.jsp"type="redirect" 
  3. public class RoleAction extends ActionSupport{  
  4.         @Override  
  5.     public String execute() throws Exception  
  6.           
  7.         return SUCCESS;  
  8.      
  9.  

 

或者:

 

viewplaincopyto clipboardprint?
  1. @Namespace("/test" 
  2. @Result(name "success"location "/test/role.jsp" 
  3. public class RoleAction extends ActionSupport  
  4.     @Override  
  5.     @Action(value "/different/url"  
  6.         results   
  7.             @Result(name "success"location "/test/role.jsp"type "redirect" 
  8.          
  9.      
  10.     public String execute() throws Exception  
  11.   
  12.         return SUCCESS;  
  13.      
  14.  

 

下面是没用annotation的xml配置,相信大家可以猜到上面注解的具体含义了吧

 

viewplaincopyto clipboardprint?
  1. <package name="default" extends="struts-default" namespace="test">  
  2.         <action name="Role" class="xxx.action.RoleAction">  
  3.             <result type="redirect">/test/function.jsp</result>   
  4.         </action>  
  5. </package>  

 

还有很多注解,以及路径配置问题,大家可以看Struts2文档中的Anotation部分了解。

 

-------------------------

另外,关于web.xml中<filter-class>应该引用哪个类

 
很多Struts2教程上都是这样写
<filter>
 <filter-name>struts2</filter-name>
 <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
</filter>
org.apache.struts2.dispatcher.FilterDispatcher这个过滤器已经是过期的了,
因为有bug,所以官方不建议使用。
推荐使用
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter