springboot拦截器
2.0之前的拦截器(WebMvcConfigurerAdapter)
- 使用注解 @Configuration配置拦截器
- 继承WebMvcConfigurerAdapter
- 重写addInterceptors 添加需要的拦截器地址
@Configuration
public class WebMvcConfigurer extends WebMvcConfigurerAdapter {//或者在主类上及继承
//-------------------------------------------------------------------------------
/**
使用的时候才定义拦截器
*/
@Override
public void addInterceptors(InterceptorRegistry registry) {
/**
* 拦截器按照顺序执行
*/
registry.addInterceptor(new TwoInterceptor()).addPathPatterns("/two/**")
.addPathPatterns("/one/**");//new TwoInterceptor()定义拦截器
registry.addInterceptor(new OneInterceptor()).addPathPatterns("/one/**");
super.addInterceptors(registry);
}
//-------------------------------------------------------------------------------
//或者先定义后使用:
@Bean //定义i=
public LoginInterceptor loginInterceptor() {
return new LoginInterceptor();
}
@Override //配置使用
public void addInterceptors(InterceptorRegistry registry) {
// addPathPatterns 用于添加拦截规则
// excludePathPatterns 用户排除拦截
// 登录拦截(登录,退出的去掉)
registry.addInterceptor(loginInterceptor()).addPathPatterns("/ucareschedule/**") //添加拦截
.excludePathPatterns("/ucareschedule/manager/login")
.excludePathPatterns("/index.html/");
}
//-------------------------------------------------------------------------------
}
2.0之后的拦截器
@Configuration
public class WebMvcConfigurer extends WebMvcConfigurerAdapter {//或者在主类上及继承
//-------------------------------------------------------------------------------
/**
使用的时候才定义拦截器
*/
@Override
public void addInterceptors(InterceptorRegistry registry) {
/**
* 拦截器按照顺序执行
*/
registry.addInterceptor(new TwoInterceptor()).addPathPatterns("/two/**")
.addPathPatterns("/one/**");//new TwoInterceptor()定义拦截器
registry.addInterceptor(new OneInterceptor()).addPathPatterns("/one/**");
super.addInterceptors(registry);
}
//-------------------------------------------------------------------------------
//或者先定义后使用:
@Bean //定义i=
public LoginInterceptor loginInterceptor() {
return new LoginInterceptor();
}
@Override //配置使用
public void addInterceptors(InterceptorRegistry registry) {
// addPathPatterns 用于添加拦截规则
// excludePathPatterns 用户排除拦截
// 登录拦截(登录,退出的去掉)
registry.addInterceptor(loginInterceptor()).addPathPatterns("/ucareschedule/**") //添加拦截
.excludePathPatterns("/ucareschedule/manager/login")
.excludePathPatterns("/index.html/");
}
//-------------------------------------------------------------------------------
}
主类设置继承类
implements WebMvcConfigurer
//拦截设置一致
具体拦截类
public class OneInterceptor implements HandlerInterceptor {//或extends HandlerInterceptorAdapter
/**
* 在请求处理之前进行调用(Controller方法调用之前)
*/
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object object) throws Exception {
System.out.println("被one拦截,放行...");
return true;//true继续,false,拦截校验失败
}
/**
* 请求处理之后进行调用,但是在视图被渲染之前(Controller方法调用之后)
*/
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object object, ModelAndView mv)throws Exception {
}
/**
* 在整个请求结束之后被调用,也就是在DispatcherServlet 渲染了对应的视图之后执行
* (主要是用于进行资源清理工作)
*/
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object object, Exception ex)throws Exception {
}
}