【发布时间】:2011-05-22 04:54:01
【问题描述】:
我有一个 JSP 页面(在 Tomcat 中),它使用 JSP 标签来检索一些数据。但是这些 JSP 标签可能会抛出异常(例如,当参数值无效时)。现在我想为这些情况实现更好的错误处理。我未能找到一种方法来全局指定异常处理程序(web.xml 中的错误页面定义不适用于 JSP 中引发的异常)。到目前为止,我发现的唯一方法是在所有 JSP 文件的页眉中指定一个 errorPage 属性。
<% page errorPage="/WEB-INF/jsp/errors/500.jsp" %>
对所有 JSP 都这样做很烦人,但可以接受。但不能接受的是错误页面总是以 200 的 HTTP 状态代码提供的事实。我想要一个 500 代替。我尝试使用 servlet 作为 errorPage 而不是 JSP,并尝试设置 response.setStatus(500) 和 response.sendError(500) 但两个调用似乎都被忽略了。所以这段代码打印了两次“200”,我不知道为什么:
System.out.println(response.getStatus());
response.setStatus(500);
System.out.println(response.getStatus());
所以问题是:如何在 JSP 错误处理程序中设置 HTTP 状态码?
【问题讨论】:
标签: java jsp tomcat jakarta-ee