verysu 设计模式 设计模式 响应式编程 百度开发平台 codeforces leetcode usfca

导航

spring拦截器

拦截器如何使用
自定义拦截器,实现HandlerInterceptor接口,并且重写接口的方法。
三个方法
preHandle 再进入后端控制器方法前辈调用
postHandle 控制器方法调用结束后,被调用
afterCompletion 所有的流程结束后,被调用,通产个用来异常处理
public class LogInterceptor implements HandlerInterceptor {
private Logger logger = Logger.getLogger(LogInterceptor.class);

/**
* 在进入控制器方法前被调用的方法
*
* @param request 请求对象
* @param response 响应对象
* @param handler 被拦截的控制器方法
* @return true表示允许访问, false表示终止访问. 如果返回false, 需要提示客户端
* @throws Exception
*/
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
logger.error("[日志拦截: 1] - preHandle - 控制器被调用前执行 - " + handler);
return true;
}

/**
* 控制器方法调用结束, 有返回结果之后, 调用postHandle方法
*
* @param request 请求对象
* @param response 响应对象
* @param handler 控制器方法
* @param modelAndView 控制器方法返回的结果
* @throws Exception
*/
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
logger.error("[日志拦截: 2] - postHandle - 控制器调用后执行 - " + handler);
}

/**
* 本次流程结束后会被调用的方法, 通常用于最终的异常处理
*
* @param request 请求对象
* @param response 响应对象
* @param handler 控制器方法
* @param ex 异常对象
* @throws Exception
*/
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
logger.error("[日志拦截: 3] - afterCompletion - 流程结束 - " + handler);
}
}

//拦截范围控制

@Configuration
@AllArgsConstructor
public class InterceptorConfig implements WebMvcConfigurer {
private LoginInterceptor loginInterceptor;

@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(loginInterceptor)
.addPathPatterns("/**")
.excludePathPatterns("/api/v1/cas/**")
.excludePathPatterns("/api/v1/test/**");
}
}

自定义参数注解
实现类HandlerMethodArgumentResolver,重写方法

  

posted on 2020-01-08 10:34  泳之  阅读(128)  评论(0编辑  收藏  举报

我是谁? 回答错误