Struts2学习笔记(4)
2.2拦截器的作用
在struts2中,拦截器能够对Action前后进行拦截,当请求某个action时执行拦截。
2.3自定义拦截器
1) 写一个类,实现Interceptor接口
2) 在struts.xml文件中配置(注册)栏截器
在package节点下注册:
<interceptors>
<!-- 注册自定义拦截器 -->
<interceptor name="LoginInterceptor"class="com.maple.interceptor.action.LoginInterceptor"/>
</interceptors>
在action节点下引用:(谁引用就拦截谁)
<!-- 引用自定义拦截器-->
<interceptor-refname="LoginInterceptor"/>
拦截器中各个方法的执行顺序:
默认构造器(服务器启动的时候执行,且在init方法之前)
init()方法(服务器启动的时候执行,在构造方法之后执行)
destory()方法(服务器关闭的时候执行)
intercept()方法(每次请求被拦截的Action时都会执行)
publicclass LoginInterceptorimplements Interceptor {
public LoginInterceptor(){
System.out.println("默认构造器");
}
@Override
publicvoid init() {
System.out.println("init()方法");
}
@Override
public Stringintercept(ActionInvocation invocation)throws Exception {
System.out.println("intercept()方法");
//调用invoke方法放行请求
return invocation.invoke();
}
@Override
publicvoid destroy() {
System.out.println("destroy()方法");
}
}
2.4栏截器的执行顺序
在struts.xml文件中,<interceptor-ref/>的引用顺序一致,先引用的先执行,后引用的后执行。
如果某个拦截器出错或不允许通过,那么下一个拦截器无法执行
需要拦截哪个Action,就在哪个Action对应的<action>标签中配置即可
在部署web应用时,拦截器的空参构造方法和init()方法各执行一次,每次请求时,intercept()都会执行一次 。
2.5拦截器栈
<interceptors>
<!-- 注册自定义拦截器 -->
<interceptorname="LoginInterceptor"class="com.maple.interceptor.action.LoginInterceptor"/>
相关新闻>>
- 发表评论
-
- 最新评论 更多>>