`

struts2拦截器

 
阅读更多
拦截器组件
可用于封装共通的业务处理,之后可以通过配置作用到Action组件上.
共通业务处理有:登录检查,日志记录,性能检测,事务处理
(1)拦截器规范
a.拦截器组件必须实现Interceptor接口,实现interceptor方法
b.拦截器组件可以继承AbstractInterceptor类
c.拦截器组件可以继承MethodFilterInterceptor类 拦截指定的方法
(2)拦截器相关配置
a.声明
<interceptor name="拦截器名" class="包名.类名"/>
b.引用
<interceptor-ref name="拦截器名或拦截器栈名"/>
或<interceptor-ref name="myinter2"><param name="includeMethods">update,delete</param></interceptor-ref>拦
截指定方法必须是继承MethodFilterInterceptor类
c.注意:当为Action组件引用了拦截器后,需要显式将defaultStack引入
例子:
<struts>
<constant name="struts.enable.DynamicMethodInvocation"
value="false" />
<constant name="struts.devMode" value="true" />
 
<package name="interceptor" namespace="/" extends="struts-default">
<interceptors>
<interceptor name="myinterceptor" class="interceptor.Myinterceptor"></interceptor>
<interceptor-stack name="myinter">
<interceptor-ref name="defaultStack"></interceptor-ref>
<interceptor-ref name="myinterceptor"></interceptor-ref>
</interceptor-stack>
</interceptors>
<!-- <default-interceptor-ref name="myinter"/>-->//全部拦截
<action name="inter" class="interceptor.Testinterator">
<interceptor-ref name="mystack"></interceptor-ref>//拦截action所有方法
<result>index.jsp</result>
</action>
</package>
 
<!-- Add packages here -->
</struts>
 
public class Myinterceptor implements Interceptor {
public void destroy() {
// TODO Auto-generated method stub
System.out.println("destroy");
}
 
public void init() {
// TODO Auto-generated method stub
System.out.println("init");
}
//如果想后调用拦截器可以
/*String str=arg0.invoke();
System.out.println("execute");
return str;
*/
public String intercept(ActionInvocation arg0) throws Exception {
System.out.println("execute");
return arg0.invoke();
}
}
* 拦截器只能在package内部
* 如果拦截器要想在package外部使用,让使用拦截器的package继承该package就可以了
 
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics