16

Web アプリケーションのカスタム エラー ページを作成している状況です (主に、サーブレット コンテナーのデフォルト エラー ページからの情報漏えいを減らすため)。エラー ステータス コードごとにエラー ページが必要なので、コードごとに適切な応答が必要になります。私が知る限り、これらのエラー ページは特にユーザー フレンドリーである必要はありませんが、単に「問題が発生しました」という 1 つのエラー ページにすべてをリダイレクトすると、問題の診断が非常に難しくなります。

HTTPステータスコードと人間が読める簡単な説明の間の適切なマッピングを提供するJavaライブラリがあるかどうか疑問に思っています(理想的には、ページタイトルとして使用するための2〜4単語の「要約」と要約を拡張した 1 ~ 3 文のメッセージ)。次に、これを JSP で使用して、エラーのクラスに関するフィードバックを提供できます。そうでない場合は、自分で作成できると確信していますが、ホイールが発明されている場合は、喜んで使用します。

4

7 に答える 7

12

したがって、HTTPステータスコードとそれらの簡単な人間が読める説明(理想的には、ページタイトルとして使用するための2〜4語の「要約」)との間の適切なマッピングを提供するJavaライブラリがあるかどうか疑問に思います。要約を拡張した1〜3文のメッセージ)。

はい、ApacheCommonsHttpClientにはこの機能があります。この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
于 2009-12-26T09:33:50.570 に答える
7

Spring ソリューションを気に入っていただけると思います: http://static.springsource.org/spring/docs/3.0.x/api/org/springframework/http/HttpStatus.html

于 2010-01-26T00:31:39.087 に答える
6

最新の apache http コンポーネント v4+ ( httpCponents )

以下を導入します: すべての httpStatuses を含む列挙型としての HttpStatus

それらの説明の使用: EnglishReasonPhraseCatalog.INSTANCE.getReason(code, Locale.ENGLISH);

ステータス コード == コード、例: 200

例えば:

HttpStatus.SC_FORBIDDEN == 403
EnglishReasonPhraseCatalog.INSTANCE.getReason(403, Locale.ENGLISH) == "Forbidden"
于 2014-12-10T12:35:29.717 に答える
5

おそらく最も簡単な解決策は、次の関数を使用することです。

httpResponse.getStatusLine().getReasonPhrase()

必要なものを正確に返します。

于 2011-03-28T06:55:17.090 に答える
4

抽象クラス ' HttpURLConnection ' は、すべての HTTP ステータス コードの定数 int 値を提供します。そのドキュメントには、各定数の短い口頭での説明があります。これらの値と文字列を使用して単純な列挙型を作成し、それを使用できます。

于 2009-10-28T15:02:56.417 に答える
1

Jersey を使用している (またはクラスパスに持っている) 場合、javax.ws.rs.core.Response.Statusenum には HTTP 仕様からの人間が読める「理由」が含まれResponse.Status.fromStatusCode(404).toString()ます"Not Found"

于 2009-12-26T07:54:03.480 に答える
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>  

具体的には、上記の例に示すように、タグを使用して、ページのタイトルと最初の見出しにある現在の HTTP ステータス コード<hs:reason/>の理由フレーズ (人間が読める説明) を表示します。

さらに、<hs:code/>タグは現在の HTTP ステータス コードを表示するために使用され、タグは<hs:cause/>エラーの原因となった例外からのメッセージを表示するために使用されます。

于 2015-12-04T18:25:24.430 に答える