Struts2注解拦截器(Before、After、BeforeResult)

来源:互联网 发布:淘宝开店提升流量 编辑:程序博客网 时间:2024/06/06 05:23

Struts2  com.opensymphony.xwork2.interceptor.annotations 包中定义了 3 个拦截器注解类型,让你可以不用编写拦截器类,直接通过注解的方式指定 action 执行之前和之后需要调用的方法。

   Struts2 提供的 3 个拦截器注解类型都只能应用到方法级别。如下:

  Before

   标注一个 action 方法,该方法将在 action 的主要方法 (  execute 方法 ) 调用之前调用。如果标注的方法有返回值,并且不为空,那么它的返回值将作为 Action 的结果代码。

   After

   标注一个 action 方法,该方法将在 action 的主要方法以及 result 执行之后调用,如果标注的方法有返回值,那么这个返回值将被忽略。

   BeforeResult

   标注一个 action 方法,该方法将在 action 的主要方法调用之后,在 result 执行之前调用,如果标注的方法有返回值,那么这个返回值将被忽略。

                 Before After  BeforeResult 注解的同名参数

 

下面是一个简单示例:

[java] view plaincopy
  1. package com.struts2.interceptor;  
  2. import com.opensymphony.xwork2.ActionSupport;  
  3. import com.opensymphony.xwork2.interceptor.annotations.After;  
  4. import com.opensymphony.xwork2.interceptor.annotations.Before;  
  5. import com.opensymphony.xwork2.interceptor.annotations.BeforeResult;  
  6. public class AnnoAction extends ActionSupport {  
  7.     /** 
  8.      * 注解 
  9.      */  
  10.     private static final long serialVersionUID = 1L;  
  11.     @Override  
  12.     public String execute() throws Exception {  
  13.         System.out.println("注解方法执行");  
  14.         return SUCCESS ;  
  15.     }  
  16.     @Before  
  17.     public void annoBefore(){  
  18.         System.out.println("方法执行前");  
  19.     }  
  20.       
  21.     @After  
  22.     public void annoAfter(){  
  23.         System.out.println("方法执行后");  
  24.     }  
  25.     @BeforeResult  
  26.     public void annoBeforeResult(){  
  27.         System.out.println("返回result之前执行");  
  28.     }  
  29. }  

 

struts.xml里面配置:

 

[xhtml] view plaincopy
  1. <!-- 注解示例 -->  
  2. <action name="anno" class="com.struts2.interceptor.AnnoAction">  
  3. <result name="success">/index.jsp</result>  
  4. <interceptor-ref name="annoInterceptor"></interceptor-ref>  
  5.  <interceptor-ref name="defaultStack"></interceptor-ref>  
  6. </action>  

 

这里面引用了annoInteceptor,需要在Interceptors里面配置:

 

[xhtml] view plaincopy
  1. <interceptors>  
  2. <interceptor name="loginInterception" class="com.struts2.interceptor.LoginInterceptor">  
  3. </interceptor>  
  4. <interceptor name="preInter" class="com.struts2.interceptor.MyInterceptor"></interceptor>  
  5. <interceptor name="annoInterceptor" class="com.opensymphony.xwork2.interceptor.annotations.AnnotationWorkflowInterceptor"></interceptor>  
  6.   
  7. </interceptors>  

 

执行结果:

 

方法执行前
注解方法执行
返回result之前执行
方法执行后


转自:http://blog.csdn.net/gaowenming/article/details/4940378

0 0
原创粉丝点击