springboot 配置使用拦截器 interceptor

来源:互联网 发布:华为软件测试招聘 编辑:程序博客网 时间:2024/05/21 13:14

springboot 配置使用拦截器 interceptor

1 定义拦截器类实现 HandlerInterceptor 

package com.kerry.interceptor;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.springframework.web.servlet.HandlerInterceptor;import org.springframework.web.servlet.ModelAndView;public class MyInterceptor implements HandlerInterceptor {@Overridepublic void afterCompletion(HttpServletRequest arg0,HttpServletResponse arg1, Object arg2, Exception arg3)throws Exception {}@Overridepublic void postHandle(HttpServletRequest arg0, HttpServletResponse arg1,Object arg2, ModelAndView arg3) throws Exception {// TODO Auto-generated method stub}@Overridepublic boolean preHandle(HttpServletRequest arg0, HttpServletResponse arg1,Object arg2) throws Exception {return false;}}

2 编写配置类 InterceptorConfigure

package com.kerry.configure;import org.springframework.boot.autoconfigure.web.WebMvcRegistrationsAdapter;import org.springframework.context.annotation.Configuration;import org.springframework.web.servlet.config.annotation.InterceptorRegistry;import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;import com.kerry.interceptor.MyInterceptor;import com.kerry.interceptor.MyInterceptor1;@Configurationpublic class InterceptorConfigure extends WebMvcConfigurerAdapter {@Overridepublic void addInterceptors(InterceptorRegistry registry) {registry.addInterceptor(new MyInterceptor()).addPathPatterns("/interceptor/*").excludePathPatterns("/interceptor/exclude/*");//registry.addInterceptor(new MyInterceptor1())//.addPathPatterns("/interceptor1/*")//.excludePathPatterns("/interceptor1/exculde/*");}}

多个拦截器可以在里面添加多个

上面继承的 WebMvcConfigurerAdapter 里面有很多其他的使用配置

只有经过DispatcherServlet 的请求,才会走拦截器链,我们自定义的Servlet 请求是不会被拦截的,比如我们自定义的Servlet地址 http://localhost:8080/servlet/myServlet 是不会被拦截器拦截的。并且不管是属于哪个Servlet 只要复合过滤器的过滤规则,过滤器都会拦截。

上面用到的 WebMvcConfigurerAdapter 并非只是注册添加拦截器使用,其顾名思义是做Web配置用的,它还可以有很多其他作用,通过下面截图便可以大概了解,具体每个方法都是干什么用的,留给大家自己研究(其实都大同小异也很简单)





附上项目结构