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

Struts2自定义拦截器

2012-04-14 00:27 281 查看
Struts中最核心的应该就是拦截器了,通过拦截器struts可以帮我们实现数据转换、数据校验、国际化等多种功能,拦截器实现的原理是动态代理,关于动态代理可以参考这篇文章:Java动态代理 下面将实现自定义拦截器:

创建一个类,实现Tnterceptor接口

import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.Interceptor;

//也可以继承AbstractInterceptor类,这样就可以不用重写destroy()和init()
public class MyInterceptor implements Interceptor {
//可以定义一些属性,并提供相应的setter方法,用于接收参数

@Override
public void destroy() {
System.out.println("销毁时调用");
}

@Override
public void init() {
System.out.println("初始化时调用");
}

@Override
public String intercept(ActionInvocation arg0) throws Exception {
System.out.println("拦截前执行");
String result = arg0.invoke();
System.out.println("拦截后执行");
return result;
}
}配置struts.xml文件:
<struts>
<constant name="struts.enable.DynamicMethodInvocation" value="false" />
<constant name="struts.devMode" value="true" />
<constant name="struts.objectFactory" value="spring" />
<include file="struts-default.xml" />
<package name="default" namespace="/" extends="struts-default">
<interceptors>
<interceptor name="myInterceptor" class="com.jyu.interceptor.MyInterceptor">
<!-- <param name="参数名">参数值</param> 用于向拦截器传递参数 -->
</interceptor>
</interceptors>

<action name="userAction" class="com.jyu.action.UserAction"
method="execute">
<result name="success">/success.jsp</result>
<result name="error">/error.jsp</result>
<interceptor-ref name="myInterceptor"></interceptor-ref>
<!-- 使用struts默认的拦截器 -->
<interceptor-ref name="defaultStack"></interceptor-ref>
</action>
</package>

</struts>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息