版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_42969074/article/details/85211284
其实SpringBoot和SpringMVC的拦截器是一样的,SpringBoot只是抛弃了XML配置,在Java类里面完成配置而已。
代码示例:
1、创建我们自己的拦截器类并实现 HandlerInterceptor 接口,LoginInterceptor类、
/**
* @author Tang Haorong
* @create 2018-12-22 15:37
* @name
*/
public class LoginInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
System.out.println("已经进入拦截器...");
return true;
}
@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("整个请求结束之后被调用");
}
}
2、创建一个Java类继承WebMvcConfigurationSupport,并重写 addInterceptors 方法。之前好像是继承WebMvcConfigurerAdapter接口,但是现在好像不推荐使用这个了。WebConfig类:
/**
* @author Tang Haorong
* @create 2018-12-22 15:32
* @name
*/
@Configuration //将其变成配置类
public class WebConfig extends WebMvcConfigurationSupport {
@Override
protected void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new LoginInterceptor()).addPathPatterns("/**").excludePathPatterns("/login");
}
}
如果有需要拦截多个路径也可以写成如下格式:
/**
* @author Tang Haorong
* @create 2018-12-22 15:32
* @name
*/
@Configuration //将其变成配置类
public class WebConfig extends WebMvcConfigurationSupport {
//需要拦截的路径
String[] addPathPatterns={
"/**"
};
//不拦截的路径
String[] excludePathPatterns={
"/hello",
"/login"
};
@Override
protected void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new LoginInterceptor())
.addPathPatterns(addPathPatterns)
.excludePathPatterns(excludePathPatterns);
}
}
Controller类:
/**
* @author Tang Haorong
* @create 2018-12-22 15:31
* @name
*/
@RestController
public class LoginController {
@GetMapping(value = "/login")
public String login(){
return "login request not intercept";
}
}
然后运行启动类访问:http://localhost:8080/loginlogin,由于这个请求是被拦截的,所以会进入LoginInterceptor拦截器中,控制台输出:
如果需要 WebMvcConfigurationSupport的更多用法,大家百度一下便知。