拦截器
SpringMVC拦截器(框架独有)
SpringMVC拦截器类似于Servlet开发中的过滤器Filter,用于对处理器进行预处理和后处理,开发者可以自己定义一些拦截器来实现这些特定功能
过滤器和拦截器的区别:拦截器是AOP思想的具体应用
过滤器、拦截器、监听器
过滤器(Filter)
当你有一堆东西的时候,你只希望选择符合你要求的某一些东西。定义这些要求的工具,就是过滤器。
拦截器(Interceptor)
在一个流程正在进行的时候,你希望干预它的进展,甚至终止它进行,这是拦截器做的事情。
监听器(Listener)
当一个事件发生的时候,你希望获得这个事件发生的详细信息,而并不想干预这个事件本身的进程,这就要用到监听器。
代码实现
<mvc:interceptors>
/ 只过滤当前文件下的一个请求 /a
/** 包括这个请求下所有请求 /a/b/c/d
<mvc:interceptor>
<mvc:mapping path="/**"/>
<bean class="com.ji.config.LoginInterceptor"/>
</mvc:interceptor>
</mvc:interceptors>
package com.ji.config;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class MyInterceptor implements HandlerInterceptor{
//return true会执行下一个拦截器(放行)chain.doFilter(req,resp);
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
System.out.println ("======================处理前=====================");
return true;
}
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
System.out.println ("======================处理后=====================");
}
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
System.out.println ("======================清理======================");
}
}
/*
======================处理前===================== //拦截器
testController方法执行了
======================处理后===================== //拦截日志
======================清理====================== //拦截日志
*/