Java库将HTTP状态代码映射到描述?

时间:2009-10-28 14:48:14

标签: java error-handling http-status-codes

我正处于为webapp编写自定义错误页面的情况(主要是为了减少servlet容器的默认错误页面中的信息泄露)。由于我需要每个错误状态代码的错误页面,我将不得不对每个代码有一个明智的响应。据我所知,这些错误页面不一定非常用户友好,但只是将所有内容重定向到单个“出错”错误页面将使诊断问题变得非常困难。

所以我想知道是否有一个Java库可以提供HTTP状态代码和简短的人类可读描述之间的良好映射(理想情况下是一个2-4字的“摘要”,用作页面标题,以及在摘要中扩展的1-3句话消息)。然后我可以在JSP中使用它来提供有关错误类的一些反馈。如果不是,我敢肯定我自己可以写一个,但如果发明了轮子,我很乐意使用它们。

7 个答案:

答案 0 :(得分:11)

  

所以我想知道是否有Java   提供良好映射的库   HTTP状态代码和简要说明之间   人类可读的描述   (理想情况下是一个2-4字的“摘要”,供使用   作为页面标题,以及1-3   句子消息扩大了   摘要)。

是的,Apache Commons HttpClient具有此功能。 HttpStatus类具有相同的int常量列表,您可以在其他地方找到它,但它还有一个static String getStatusText(int)方法,它返回一个人类可读的状态代码描述。

以下是Maven依赖项:

<dependency>
    <groupId>commons-httpclient</groupId>
    <artifactId>commons-httpclient</artifactId>
    <version>3.1</version>
</dependency>

示例代码:

import org.apache.commons.httpclient.HttpStatus;

String responseMessage = HttpStatus.getStatusText(HttpStatus.SC_OK);
System.out.println(responseMessage);

打印:

OK

答案 1 :(得分:7)

答案 2 :(得分:5)

也许最简单的解决方案是使用下一个功能:

httpResponse.getStatusLine().getReasonPhrase()

它准确地返回所需内容。

答案 3 :(得分:4)

抽象类“HttpURLConnection”为所有HTTP状态代码提供常量int值。其文档对每个常量都有简短的口头描述。您可以使用这些值和字符串使自己成为一个简单的枚举,然后使用它。

答案 4 :(得分:4)

最新的apache http组件v4 +(httpCoponents)

介绍以下内容: HttpStatus作为包含所有httpStatuses的枚举

对于他们的描述使用: EnglishReasonPhraseCatalog.INSTANCE.getReason(code,Locale.ENGLISH);

您的状态代码==代码,例如:200

例如:

HttpStatus.SC_FORBIDDEN == 403
EnglishReasonPhraseCatalog.INSTANCE.getReason(403, Locale.ENGLISH) == "Forbidden"

答案 5 :(得分:1)

如果你正在使用Jersey(或在你的类路径上使用它),javax.ws.rs.core.Response.Status枚举包含来自HTTP规范的人类可读“原因”,例如: Response.Status.fromStatusCode(404).toString()提供"Not Found"

答案 6 :(得分:0)

您可以使用我的HttpStatus JSP Tag Libray

<%@ page isErrorPage="true" %>
<%@ taglib prefix="hs" uri="http://erik.thauvin.net/taglibs/httpstatus" %>
<html><head>
<title><hs:code/> <hs:reason default="Server Error"/></title>
</head>
<h1><hs:reason default="Server Error"/></h1>
Cause: <pre><hs:cause default="Unable to complete your request."/></pre>  

具体来说,如上例所示,<hs:reason/>标记用于显示页面&#39中当前HTTP状态代码的原因短语(人类可读描述)标题和第一个标题。

此外,<hs:code/>标记用于显示当前的HTTP状态代码和<hs:cause/>标记,以显示导致错误的异常消息。