1. spring boot 拦截器:
(1)添加一个bean 实现HandlerInterceptor 接口
@Component
public class CustomInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
System.out.println("preHandle..........");
return true;
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
System.out.println("postHandle..........");
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
System.out.println("afterCompletion..........");
}
}
(2)将自定义的拦截器添加到spring MVC的拦截器容器中
@SpringBootConfiguration
public class SpringMvcConfig extends WebMvcConfigurerAdapter {
@Autowired
private CustomInterceptor customInterceptor;
/**
* 将自定义的拦截器添加到spring MVC的拦截器容器中
* @param registry
*/
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(customInterceptor).addPathPatterns("/**");
}
}
2. spring MVC层的异常处理:
自定义一个异常处理类,加@ControllerAdvice 注解,该注解是一个 标志有@Component。
@ExceptionHandler : 指定该方法处理的异常类型
@ResponseBody: 处理异常后,继续响应客户端
@ControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(value = Exception.class)
@ResponseBody
public Object jsonErrorHandler(HttpServletRequest req, Exception e) throws Exception {
Logger logger = LogManager.getLogger("GlobalError");
logger.error("errorInfo",e);
e.printStackTrace();
JSONObject jsonObject = new JSONObject();
jsonObject.put("status","500");
return jsonObject;
}
}