SpringMVC拦截器类似于Servlet开发中的过滤器Filter用于对的处理器进行预处理和后处理
过滤器与拦截器的区别:拦截器是AOP思想的具体应用
过滤器
servlet规范中的一部分,任何java web工程都可以使用
在url-pattern中配置了/*之后,可以对所有要访问的资源进行拦截
拦截器
拦截器是SpringMVC框架自己的,只有使用了SpringMVC框架的工程才能使用
拦截器只会拦截访问的控制器方法, 如果访问的是jsp/html/css/image/js是不会进行拦截的
做一个DEMO
写一个拦截器,实现HandlerInterceptor接口
public class FirstInterceptor implements HandlerInterceptor { //return true 执行下一个拦截器 放行 //return false 不执行下一个拦截器 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("清理"); } }
在springmvc的配置文件中配置拦截器
<!--关于拦截器的配置--> <mvc:interceptors> <mvc:interceptor> <!--/** 包括路径及其子路径--> <!--/admin/* 拦截的是/admin/add等等这种 , /admin/add/user不会被拦截--> <!--/admin/** 拦截的是/admin/下的所有--> <mvc:mapping path="/**"/> <!--bean配置的就是拦截器--> <bean class="com.kuang.interceptor.MyInterceptor"/> </mvc:interceptor> </mvc:interceptors>
编写一个Controller,接收请求
@RestController public class Today { @RequestMapping("/t") public String test(){ System.out.println("Today中的test()方法执行了***************"); return "ok"; } }
处理前 Today中的test()方法执行了*************** 处理后 清理
原文:https://www.cnblogs.com/IanIan/p/14399063.html