在 Spring Boot 中,你可以使用拦截器来对 404 和 500 等错误进行拦截和处理。下面是一个简单的示例,演示如何使用拦截器实现对这些错误的拦截:
首先,创建一个自定义的拦截器类,实现 HandlerInterceptor
接口,重写其中的方法,例如:
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class ErrorInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
// 在请求处理之前进行拦截判断
return true; // 返回 true 表示继续执行后续的拦截器和请求处理
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
// 在请求处理之后,视图渲染之前进行拦截处理
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
// 在整个请求完成之后进行拦截处理,可以处理一些资源清理等操作
}
}
然后,在 Web 配置类中注册拦截器,并配置拦截路径:
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Configuration
public class WebConfig implements WebMvcConfigurer {
@Override
public void addInterceptors(InterceptorRegistry registry) {
// 注册自定义的拦截器,并配置拦截路径
registry.addInterceptor(new ErrorInterceptor())
.addPathPatterns("/**") // 拦截所有请求
.excludePathPatterns("/static/**"); // 排除静态资源请求
}
}
这样配置之后,拦截器会拦截所有请求,并在相应的方法中进行处理。你可以根据需要在拦截器的 preHandle
、postHandle
和 afterCompletion
方法中编写具体的逻辑,对 404 和 500 等错误进行特定的处理和响应,例如跳转到自定义的错误页面、记录日志等。
请注意,以上示例是通过实现 HandlerInterceptor
接口来创建自定义拦截器的方式。另外,如果你使用的是 Spring Security,它也提供了对错误的拦截和处理机制,可以进一步加强对错误的控制和安全性。