springMVC拦截器,拦截器拦截策略设置
目录
1、MyInterceptor1
2、UserController
3、MvcConfig,拦截器4种拦截方法策略
做请求的校验,如果校验没有通过,直接返回,原来下面的处理,就不用处理了
将request进行拦截校验
将response进行拦截校验
preHandle 在请求处理之前调用
postHandler 是在回应以后
afterCompletion 是在最后调用
1、MyInterceptor1
package cn.tedu._06interceptor.interceptor;import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;/*** 拦截指定请求** */
public class MyInterceptor1 implements HandlerInterceptor {/*** 一般做权限校验** retrun 是否放行,false则直接结束,请求结束* */@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {System.out.println("MyInterceptor1 第一个拦截器拦截 1、preHandle");return true;
// return HandlerInterceptor.super.preHandle(request, response, handler);}/*** 可以做敏感词过滤* ModelAndView 模型数据* */@Overridepublic void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
// HandlerInterceptor.super.postHandle(request, response, handler, modelAndView);System.out.println("MyInterceptor1 第一个拦截器拦截 2、postHandle");}@Overridepublic void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
// HandlerInterceptor.super.afterCompletion(request, response, handler, ex);System.out.println("MyInterceptor1 第一个拦截器拦截 3、afterCompletion");}
}
2、UserController
package cn.tedu._06interceptor.controller;import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
@RequestMapping(value = "/v1/users/")
public class UserController {@GetMapping("login")public String login() {return "登录成功";}@GetMapping("reg")public String reg() {return "注册成功";}
}
3、MvcConfig,拦截器4种拦截方法策略
package cn.tedu._06interceptor.config;import cn.tedu._06interceptor.interceptor.MyInterceptor1;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;@Configuration
public class MvcConfig implements WebMvcConfigurer {@Overridepublic void addInterceptors(InterceptorRegistry registry) {
// 注册拦截器:
// 1、策略1,拦截所有请求
// registry.addInterceptor(new MyInterceptor1());// 2、策略2:拦截指定请求,比如:拦截登录请求
// 执行登录接口的时候,会打印拦截器日志
// registry.addInterceptor(new MyInterceptor1())
// .addPathPatterns("/v1/users/login");// 3、策略3:拦截指定多个请求,比如拦截用户模块请求
// registry.addInterceptor(new MyInterceptor1())
// .addPathPatterns("/v1/users/**");// 4、策略4:拦截用户模块中,除了登录功能以外的所有请求,registry.addInterceptor(new MyInterceptor1()).addPathPatterns("/v1/users/**").excludePathPatterns("/v1/users/login");}
}