I'm in the situation where I'm writing custom error pages for a webapp (primarily to reduce information disclosure from the servlet container's default error pages). Since I need an error page for each error status code, I'm going to have to have a sensible response for each code. As far as I can tell, these error pages don't have to be particularly user-friendly, but simply redirecting everything to a single "it went wrong" error page is going to make diagnosing problems very difficult.
So I'm wondering if there is a Java library that provides a good mapping between HTTP status codes and a brief human-readable description of them (ideally a 2-4 word "summary", for use as a page title, as well as a 1-3 sentence message expanding on the summary). Then I could just use this in a JSP to provide some feedback on the class of the error. If not I'm sure I can write one myself, but if wheels have been invented I'm happy to use them.
You can use my HttpStatus JSP Tag Libray:
Specifically, as shown in the example above, the
<hs:reason/>
tag is used to display the reason phrase (human-readable description) for the current HTTP status code in the page's title and first heading.Additionally, the
<hs:code/>
tag is used to display the current HTTP status code and the<hs:cause/>
tag to display the message from the exception that caused the error.Yes, Apache Commons HttpClient has this functionality. The
HttpStatus
class has the same list ofint
constants that you'll find elsewhere, but it also has astatic String getStatusText(int)
method that returns a human-readable description of the status code.Here is the
Maven
dependency:Example code:
Prints:
If you're using Jersey (or have it on your classpath), the
javax.ws.rs.core.Response.Status
enum includes human-readable "reasons" from the HTTP spec, e.g.Response.Status.fromStatusCode(404).toString()
gives"Not Found"
.Maybe the easiest solution is to use next function:
It returns exactly what's needed.
Abstract class 'HttpURLConnection' provides you with constant int values for all HTTP status codes. Its documentation has a short verbal description for each constant. You could make yourself a simple enum with these values and strings, and use that.
I think you might like the Spring solution: http://static.springsource.org/spring/docs/3.0.x/api/org/springframework/http/HttpStatus.html