我正在尝试从tomcat servlet发送纯文本错误消息,以便应用程序可以将响应呈现给用户。
我的web.xml中有以下内容:
<error-page>
<error-code>409</error-code>
<location>/string_error.jsp</location>
</error-page>
string_error.jsp如下:
${requestScope['javax.servlet.error.message']}
这成功地为我提供了409响应的纯文本错误消息。但是,我想对400/500范围内的任何错误使用同一页面,而不为每个错误手动指定新的<error-page>
块。我会假设<error-code>*</error-code>
会实现这一目标,但事实并非如此。 Tomcat是否提供了执行此操作的机制?
答案 0 :(得分:5)
如果您正在使用Servlet 3.0容器,例如Tomcat 7.0,那么您可以省略<error-code>
(或<exception-type>
)元素,使其成为全局默认错误页面。
<error-page>
<location>/string_error.jsp</location>
</error-page>
从Servlet 3.0开始,那些元素就是可选的。
但是,如果您还没有使用Servlet 3.0,那么您必须在容器级别配置它。例如,在Tomcat 6.0(Servlet 2.5容器)中,您需要创建一个自定义错误报告Valve类。然后,您可以将其指定为errorReportValveClass
文件中<Host>
element的/conf/server.xml
属性。
对于其他容器,请查阅其文档。
答案 1 :(得分:1)
您可以在Tomcat中通过error-page
或(java)error-code
添加exception-type
个元素。我不认为它可以像你建议的那样变得一般。
<error-page>
<error-code>404</error-code>
<location>/404error.html</location>
</error-page>
<error-page>
<exception-type>java.lang.Throwable</exception-type>
<location>/someJavaException.html</location>
</error-page>