因此,基本上,我可以使用web.xml创建自定义错误页面:
Grape::Entity
但是到目前为止,在我的项目中,我没有使用web.xml,而是倾向于仅使用Java代码。
在web.xml中是否有适当且简单的方法来执行操作,而不使用它(创建自定义错误页面)? 还有,如果没有这种方法,那么仅添加web.xml来处理自定义错误页面会是一个不好的举动吗?
答案 0 :(得分:0)
您可以创建一个Java类及其控制器。例如,ErrorController在此处使用RequestMapping并为其创建一个jsp或thymeleaf前端页面。
这是一种好习惯https://www.baeldung.com/custom-error-page-spring-mvc 只是谷歌。
答案 1 :(得分:0)
这是@ControllerAdvice在Spring MVC中的作用
@ControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler({NoHandlerFoundException.class})
@ResponseStatus(value = HttpStatus.NOT_FOUND)
public void handleNotFound(HttpSession session, HttpServletRequest req, HttpServletResponse httpServletResponse, Exception ex) {
}
}
也将此行添加到您的WebApplicationInitializer
public class CCPMWebAppInitializer implements WebApplicationInitializer {
@Override
public void onStartup(ServletContext servletContext) throws ServletException {
// Create the 'root' Spring application context
AnnotationConfigWebApplicationContext rootContext = new AnnotationConfigWebApplicationContext();
....
DispatcherServlet dispatcherServlet = new DispatcherServlet(rootContext);
dispatcherServlet.setThrowExceptionIfNoHandlerFound(true);
...
}
答案 2 :(得分:0)
好吧,就像@ MarkA.Fitzgerald在评论中提到的那样:
根据stackoverflow.com/a/13450154/1840078,社区似乎感觉没有办法做到这一点。
所以,我想,我可以使用web.xml进行诸如创建自定义错误页面之类的简单操作。我发现它简单而干净,而不是尝试在Java中对其进行“硬编码”。
答案 3 :(得分:0)
您可以在一个配置类中创建一个EmbeddedServletContainerCustomizer
。例如
@Bean
public EmbeddedServletContainerCustomizer containerCustomizer() {
return container -> {
ErrorPage error404Page = new ErrorPage(HttpStatus.NOT_FOUND, "/exceptions/not-found.jsp");
container.addErrorPages(error404Page);
};
}