什么是拦截器
1.SpringMVC框架中的拦截器用于 对处理器 进行预处理和后处理的技术。
2.可以定义拦截器链,按照顺序执行。
3.拦截器和过滤器功能类似,区别在
拦截器 | 过滤器 |
过滤器是Servlet规范的一部分,任何框架都可以使用过滤技术。 | 而拦截器是SpringMVC框架独有的 |
过滤器配置了/*,可以拦截任何资源 | 拦截器只对controller中的方法进行拦截 |
4.拦截器也是AOP思想的一种实现方式
5.想要定义拦截器,需要实现HandlerInterceptor接口
怎么使用拦截器
1.编写拦截类 实现HandlerInterceptor
2.配置拦截器
package org.maple.interceptor; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * @author mapleins * @Date 2018-12-18 16:47 * @Desc 自定义拦截器 **/ public class MyInterceptor implements HandlerInterceptor { /** * 预处理,controller方法执行前 * @return true表示放行,执行下一个拦截器,如果没有,就执行controller方法 * false表示不放行,通过servletAPI跳转到其他页面中 */ @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { System.out.println("拦截器执行了...前"); return true; } /** * controller执行之后,jsp执行之前 * 如果在这里面配置了页面跳转,就不会跳转到之前controller配置的视图页面里了 * request.getRequestDispatcher().forward(); */ @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { System.out.println("拦截器执行了...后"); } /** * 在页面执行后再执行 */ @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { System.out.println("拦截器执行了...在页面执行后执行"); } }
<!--配置拦截器--> <mvc:interceptors> <mvc:interceptor> <!--要拦截的具体方法--> <mvc:mapping path="/interceptor/*"/> <!--不要拦截的方法--> <!--<mvc:exclude-mapping path=""/>--> <!--配置拦截器对象--> <bean class="org.maple.interceptor.MyInterceptor"/> </mvc:interceptor> </mvc:interceptors>
原文地址:https://www.cnblogs.com/mapleins/p/10138756.html
时间: 2024-10-09 23:31:48