拦截器如何使用
自定义拦截器,实现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);
}
}
来源:https://www.cnblogs.com/sxshe/p/12165288.html