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

时间:2011-04-05 14:41:45

标签: spring-mvc exception-handling http-status-code-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错误?

2 个答案:

答案 0 :(得分:2)

如果您想在404页面或任何其他错误页面中获取一些动态内容,请将页面映射到弹簧上下文中的控制器。 例如,声明一个名为“404.htm”的控制器并尝试请求页面/404.htm以确保它正常工作, 然后在你的web.xml中写下以下内容:

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

答案 1 :(得分:0)

尝试使用此网址http://blog.codeleak.pl/2013/04/how-to-custom-error-pages-in-tomcat.html

解释如何创建一个控制器来获取错误并将参数放到.jsp中。