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

SpringMVC——自定义拦截器

2017-09-13 17:31 239 查看
一、自定义一个拦截器类

public class FirstInterceptor implements HandlerInterceptor{
/**
* 渲染视图之后被调用. 释放资源
*/
@Override
public void afterCompletion(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, Exception arg3)
throws Exception {
System.out.println("afterCompletion");
}

/**
* 调用目标方法之后, 但渲染视图之前.
* 可以对请求域中的属性或视图做出修改.
*/
@Override
public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, ModelAndView arg3)
throws Exception {
System.out.println("postHandle");
}
/**
* 该方法在目标方法之前被调用.
* 若返回值为 true, 则继续调用后续的拦截器和目标方法.
* 若返回值为 false, 则不会再调用后续的拦截器和目标方法.
* 可以考虑做权限. 日志, 事务等.
*/
@Override
public boolean preHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2) throws Exception {
System.out.println("preHandle");
return true;
}

}


二、配置文件

<mvc:interceptors>
<!-- 配置自定义的拦截器 -->
<bean class="cn.springmvc.interceptors.FirstInterceptor"></bean>
<!-- 配置拦截器(不)作用的路径  -->
<mvc:interceptor>
<!-- 配置拦截器作用的路径  -->
<mvc:mapping path="/emps"/>
<!-- 配置拦截器不作用的路径  -->
<mvc:exclude-mapping path="/user_logout" />
<bean class="cn.springmvc.interceptors.SecondInterceptor"></bean>
</mvc:interceptor>
</mvc:interceptors>


多个拦截方法的执行顺序

myinterceptor1:preHandle()
myinterceptor2:preHandle()

myinterceptor2:postHandle()
myinterceptor1:postHandle()
myinterceptor2:afterCompletion()
myinterceptor1 :afterCompletion()


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