您的位置:首页 > 编程语言 > Java开发

struts2拦截器--注解

2009-12-04 14:53 288 查看
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
注解的同名参数

下面是一个简单示例:

package com.struts2.interceptor;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.interceptor.annotations.After;
import com.opensymphony.xwork2.interceptor.annotations.Before;
import com.opensymphony.xwork2.interceptor.annotations.BeforeResult;
public class AnnoAction extends ActionSupport {
/**
* 注解
*/
private static final long serialVersionUID = 1L;
@Override
public String execute() throws Exception {
System.out.println("注解方法执行");
return SUCCESS ;
}
@Before
public void annoBefore(){
System.out.println("方法执行前");
}

@After
public void annoAfter(){
System.out.println("方法执行后");
}
@BeforeResult
public void annoBeforeResult(){
System.out.println("返回result之前执行");
}
}


struts.xml里面配置:

<!-- 注解示例 -->
<action name="anno" class="com.struts2.interceptor.AnnoAction">
<result name="success">/index.jsp</result>
<interceptor-ref name="annoInterceptor"></interceptor-ref>
<interceptor-ref name="defaultStack"></interceptor-ref>
</action>


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

<interceptors>
<interceptor name="loginInterception" class="com.struts2.interceptor.LoginInterceptor">
</interceptor>
<interceptor name="preInter" class="com.struts2.interceptor.MyInterceptor"></interceptor>
<interceptor name="annoInterceptor" class="com.opensymphony.xwork2.interceptor.annotations.AnnotationWorkflowInterceptor"></interceptor>

</interceptors>


执行结果:

方法执行前

注解方法执行

返回result之前执行

方法执行后
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: