I’m trying to send plain text error messages from a tomcat servlet, so that the responses may be presented to the user by the application.
I have the following in my web.xml:
<error-page>
<error-code>409</error-code>
<location>/string_error.jsp</location>
</error-page>
And string_error.jsp is the following:
${requestScope['javax.servlet.error.message']}
This successfully gives me plain-text error messages for a 409 response. However, I would like to use this same page for any error in the 400/500 range, without manually specifying a new <error-page> block for each one. I would have assumed that <error-code>*</error-code> would accomplish this, but it does not. Does Tomcat provide a mechanism to do this?
If you’re using a Servlet 3.0 container, such as Tomcat 7.0, then you can just omit the
<error-code>(or<exception-type>) element to make it a global default error page.Since Servlet 3.0 those elements are namely optional.
However, if you’re not on Servlet 3.0 yet, then you’d have to configure it at the container level. In for example Tomcat 6.0 (which is a Servlet 2.5 container), you’d need to create a custom error report valve class. You can then specify it as
errorReportValveClassattribute of the<Host>element in/conf/server.xmlfile.For other containers, consult their documentation.