import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
@Configuration
public class WebConfig implements WebMvcConfigurer {
@Override
public void addInterceptors(InterceptorRegistry registry) {
// 添加自定义拦截器
registry.addInterceptor(new HandlerInterceptorAdapter() {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
// 拦截逻辑
return true;
}
}).addPathPatterns("/**"); // 拦截所有请求
}
@Bean
public ResponseResultInterceptor responseResultInterceptor() {
return new ResponseResultInterceptor(); // 返回统一处理结果的拦截器Bean
}
// 其他配置...
}
// 结果拦截器
@Component
public class ResponseResultInterceptor implements HandlerInterceptor {
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
// 在业务处理器处理请求执行后,生成视图之前执行,这里可以通过modelAndView对视图做出修改
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
// 在整个请求结束之后调用,也就是在DispatcherServlet渲染了对应的视图之后执行(主要是用于资源清理工作)
}
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
// 在业务处理器处理请求执行前执行,返回true继续执行,返回false中断执行
return true;
}
}
// 自定义异常处理器
@ControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(Exception.class)
@ResponseBody
public ResponseResult handleException(Exception e) {
// 异常处理逻辑,返回统一的错误信息
return new ResponseResult(ErrorCode.SYSTEM_ERROR);
}
}
// 错误代码枚举
public enum ErrorCode {
SYSTEM_ERROR(-1, "系统异常"),
// 其他错误代码枚举...
}
// 统一返回结果类
public class ResponseResult {
private int code;
private String message;
private Object data;
public ResponseResult(int code, String message) {
this.code = code;
this.messag
评论已关闭