我想要的是什么:
我想为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错误?
答案 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中。