参考网址:
java中拦截器与过滤器区别
https://blog.csdn.net/shaoming314/article/details/114281567
springboot过滤器与拦截器详解
https://blog.csdn.net/shaoming314/article/details/114287788
过滤器和拦截器的优先级
springboot中全局异常依赖于 @RestControllerAdvice
@RestControllerAdvice 基于 springmvc
而 过滤器 是 tomcat 的规范 , 所以 全局异常可以拦截 拦截器的异常 , 但是
过滤器的自定义异常我们需要手动进行处理

示例代码
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
String clientIP = ServletUtil.getClientIP((HttpServletRequest) servletRequest);
log.info("【IpFilter 请求 IP】:{}", clientIP);
if (LegalIp.IP_LIST.contains(clientIP)) {
filterChain.doFilter(servletRequest, servletResponse);
return;
}else {
servletResponse.setCharacterEncoding("utf-8");
servletResponse.getWriter().println(JSONUtil.toJsonStr(new Result().error(ResultCodeEnum.CLIENT_IP_REFUSE_ERROR)));
return;
}
}
说明: