1.自定义注解
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface TestOne {
String value();
}
2.编写拦截器,实现HandlerInterceptorAdapter接口,重写(pre、post、after)Handler方法。
public class TestOneInterceptor extends HandlerInterceptorAdapter {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
if (handler instanceof HandlerMethod) {
TestOne testOne = ((HandlerMethod) handler).getMethodAnnotation(TestOne.class);
if ("".equals(testOne.value())) {
}
}
return super.preHandle(request, response, handler);
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
super.postHandle(request, response, handler, modelAndView);
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
super.afterCompletion(request, response, handler, ex);
}
}
3.编写Config类,继承WebMvcConfigurer,注册拦截器。
public class InterceptorConfig implements WebMvcConfigurer {
private final TestOneInterceptor testOneInterceptor;
public InterceptorConfig(TestOneInterceptor testOneInterceptor) {
this.testOneInterceptor = testOneInterceptor;
}
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(testOneInterceptor).addPathPatterns("/xxx").excludePathPatterns("/yyy");
}
}
4.在需要的地方添加注解。