Java Spring Boot Web App:处理 404 异常



我正在学习Java Spring Boot教程,并且正在尝试处理404异常。我有本教程中的确切代码,但由于某种原因它不起作用,尽管 403 错误有效。在本教程中,教师处理所有未完成异常的方式如下,特别是 defaultErrorHandler((。但是,这不起作用:

@ControllerAdvice
public class GlobalExceptionHandler {
@Value("${message.error.exception}")
private String exceptionMessage;
@Value("${message.error.duplicate.user}")
private String duplicateUserMessage;
@ExceptionHandler(value=Exception.class)
public ModelAndView defaultErrorHandler(HttpServletRequest req, Exception e) {
ModelAndView modelAndView = new ModelAndView();
modelAndView.getModel().put("message", exceptionMessage);
modelAndView.getModel().put("url", req.getRequestURL());
modelAndView.getModel().put("exception", e);
modelAndView.setViewName("app.exception");
return modelAndView;
}
@ExceptionHandler(value=DataIntegrityViolationException.class)
public ModelAndView duplicateUserHandler(HttpServletRequest req, Exception e) {
ModelAndView modelAndView = new ModelAndView();
modelAndView.getModel().put("message", duplicateUserMessage);
modelAndView.getModel().put("url", req.getRequestURL());
modelAndView.getModel().put("exception", e);
modelAndView.setViewName("app.exception");
return modelAndView;
}
}

然后,我尝试添加类似于讲师处理 403 错误的内容,如下所示,但这也不起作用:

@RequestMapping("/403")
ModelAndView accessDenied(ModelAndView modelAndView) {
System.out.println("We're here");
modelAndView.getModel().put("message", accessDeniedMessage);
modelAndView.setViewName("app.message");
return modelAndView;
}
@RequestMapping("/404")
ModelAndView pageNotFound(ModelAndView modelAndView) {
modelAndView.getModel().put("message", exceptionMessage);
modelAndView.setViewName("app.message");
return modelAndView;
}

我试图通过将System.out.println("test"(放入每个可疑方法中进行调试,但没有一个被达到。任何帮助将不胜感激。谢谢!

如果要处理 404 异常以显示自定义页面而不是可白化错误。您可以通过在资源目录中创建名为 error 的文件夹来执行此操作。在错误文件夹中创建404.html文件并添加html代码,样式等。 现在,Spring Boot 会选择您的 404.html 文件,并在发生 404 错误时向用户显示。像这样,您还可以处理任何错误,只需输入错误代码 501.html,407.html 等的文件名

最新更新