spring-mvc – Spring MVC 3:如何为HTTP 404错误提供错误页面的动态内容?

我想要的是:

我想为HTTP 404错误页面提供一个模型.而不是写一个在web.xml中指定的静态错误页面,我想使用一个
异常控制器,它处理HTTP 404错误.

我做了什么:

从web.xml中删除了错误页面标记:

<error-page>
    <error-code>404</error-code>
    <location>/httpError.jsp</location>
</error-page>

并在我的AbstractController类中实现了以下异常处理程序方法:

@ExceptionHandler(NoSuchRequestHandlingMethodException.class)
public ModelAndView handleNoSuchRequestException(NoSuchRequestHandlingMethodException ex) {
    ModelMap model = new ModelMap();
        model.addAttribute("modelkey", "modelvalue");
        return new ModelAndView("/http404Error", model);
}

@ExceptionHandler(NullPointerException.class)
public ModelAndView handleAllExceptions(NullPointerException e) {
        ModelMap model = new ModelMap();
        model.addAttribute("modelkey", "modelvalue");
        return new ModelAndView("/exceptionError", model);
}

什么是:

它可以查找异常,但不能查找HTTP错误代码状态404.默认情况下,DispatcherServlet似乎会处理HTTP 404错误.是否有可能改变这种行为?

如何在异常处理程序中捕获404错误?

最佳答案 如果要在404页面或任何其他错误页面中获取一些动态内容,请将页面映射到弹簧上下文中的控制器.

例如,声明一个名为“404.htm”的控制器并尝试请求页面/404.htm以确保它正常工作,

然后在你的web.xml中写下以下内容:

<error-page>
    <error-code>404</error-code>
    <location>/404.htm</location>
</error-page>
点赞