【发布时间】:2014-03-07 03:30:07
【问题描述】:
在我的 Spring MVC 应用程序(servlet 3.0)中,我在 web.xml 中定义了一个自定义错误处理程序:
<error-page>
<location>/error</location>
</error-page>
映射到控制器:
@Controller
class CustomErrorController {
@RequestMapping("error")
public String customError(HttpServletRequest request, HttpServletResponse response, Model model) {
...
}
}
这适用于大多数错误,例如 404 错误。 但是,我还定义了一个拦截器,如果没有经过身份验证的用户,它会返回 403 响应:
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
HttpSession httpSession = request.getSession();
((HttpServletResponse) response).setStatus(HttpURLConnection.HTTP_FORBIDDEN);
return false;
}
403 响应没有被自定义错误处理程序捕获 - 浏览器只是没有收到错误代码 403 的响应。
我认为这是因为我在拦截器中做错了事 - 我应该如何更改 Interceptor 中的代码才能正常处理错误?
【问题讨论】:
-
您如何将错误代码附加到错误页面?
标签: java spring spring-mvc tomcat6 servlet-3.0