HttpStatus
1.1.1
JSPエラーページにHTTPステータスコードのコード、理由、原因、および/またはメッセージを表示する簡単なJSPタグライブラリ。
例えば:
<%@ 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 >
Message: < pre >< hs:message default = " A server error has occured. " /></ pre >
...または
<%@ page isErrorPage = " true " import = " net.thauvin.erik.httpstatus.Reasons " %>
<%= Reasons . getReasonPhrase(pageContext . getErrorData() . getStatusCode()) % >501ステータスコードに表示されます。
Not Implemented build.gradleファイルに以下を含めます。
repositories {
mavenCentral()
}
dependencies {
implementation ' net.thauvin.erik.httpstatus:httpstatus:1.1.1 '
} bldビルドファイルに以下を含めます。
scope ( compile ). include (
dependency ( "net.thauvin.erik.httpstatus" , "httpstatus" , version ( 1 , 1 , 0 ))
);Mavenアーティファクトとして:
< dependency >
< groupId >net.thauvin.erik.httpstatus</ groupId >
< artifactId >httpstatus</ artifactId >
< version >1.1.1</ version >
</ dependency ><hs:cause/>タグには、現在のHTTPステータスコードの原因が表示されます。速記:
<%= pageContext . getErrorData() . getThrowable() . getCause() . getLocalizedMessage() % >オプションの属性は次のとおりです。
| 属性 | 説明 |
|---|---|
default | 原因がない場合、出力に対するフォールバック値 |
escapeXml | <、>、&、 '、 "を対応するエンティティコードに変換します。値はデフォルトでtrueです。 |
<hs:code/>タグには、現在のHTTPステータスコードが表示されます。速記:
<%= pageContext . getErrorData() . getStatusCode() % ><hs:message/>タグには、現在のエラーメッセージが表示されます。速記:
<%= request . getAttribute( " javax.servlet.error.message " ) % >オプションの属性は次のとおりです。
| 属性 | 説明 |
|---|---|
default | エラーメッセージが使用できない場合、出力のフォールバック値。 |
escapeXml | <、>、&、 '、 "を対応するエンティティコードに変換します。値はデフォルトでtrueです。 |
<hs:reason/>タグには、HTTPステータスコードの理由が表示されます。オプションの属性は次のとおりです。
| 属性 | 説明 |
|---|---|
default | 理由がない場合、出力のフォールバック値。 |
code | HTTPステータスエラーコード。指定されていない場合、現在のステータスコードが使用されます。 |
escapeXml | <、>、&、 '、 "を対応するエンティティコードに変換します。値はデフォルトでtrueです。 |
StatusCode Beanを使用して、ステータスコードエラーのクラスを確認できます。たとえば、JSTLを使用してください。
<%@ taglib prefix = " hs " uri = " http://erik.thauvin.net/taglibs/httpstatus " %>
<%@ taglib prefix = " c " uri = " http://java.sun.com/jsp/jstl/core " %>
< jsp:useBean id = " statusCode " class = " net.thauvin.erik.httpstatus.StatusCode " />
< c:set target = " ${ statusCode } " property = " code " >< hs:code /></ c:set >
< c:choose >
< c:when test = " ${ statusCode . isClientError() } " >
An error occurred on your side. (< hs:reason />)
</ c:when >
< c:otherwise >
An error occurred on our side. (< hs:message />)
</ c:otherwise >
</ c:choose >またはサーブレットで:
import net . thauvin . erik . httpstatus . StatusCode ;
public class ExampleServlet extends HttpServlet {
public void doGet ( HttpServletRequest request , HttpServletResponse response ) {
var statusCode = new StatusCode (
( Integer ) request . getAttribute ( "javax.servlet.error.status_code" ));
if ( statusCode . isError ()) {
if ( statusCode . isServerError ()) {
var reason = statusCode . getReason ();
} else {
// ...
}
}
}
} StatusCode豆のメソッドは次のとおりです。
| 方法 | 説明 |
|---|---|
getReason | ステータスコードの理由を返します(例: Internal Server Error ) |
isClientError | ステータスコードがクライアントエラーであるかどうかを確認します。 |
isError | ステータスコードがサーバーまたはクライアントエラーであるかどうかを確認します。 |
isInfo | ステータスコードが情報になっているかどうかを確認します。 |
isRedirect | ステータスコードがリダイレクトであるかどうかを確認します。 |
isServerError | ステータスコードがサーバーエラーであるかどうかを確認します。 |
isSuccess | ステータスコードが成功しているかどうかを確認します。 ( OK ) |
isValid | ステータスコードが有効かどうかを確認します。 |
理由は、次のようにリソースバンドルプロパティで定義されています。
| ステータスコード | 理由 |
|---|---|
100 | 続く |
101 | スイッチングプロトコル |
102 | 処理 |
103 | 初期のヒント |
110 | 応答は古くなっています |
111 | 再検証に失敗しました |
112 | 切断された操作 |
113 | ヒューリスティックの有効期限 |
199 | その他の警告 |
200 | わかりました |
201 | 作成されました |
202 | 受け入れられました |
203 | 非認証情報 |
204 | コンテンツはありません |
205 | コンテンツをリセットします |
206 | 部分コンテンツ |
207 | マルチステータス |
208 | すでに報告されています |
214 | 変換が適用されました |
218 | これで問題ありません |
226 | 私は使用されています |
299 | その他の永続的な警告 |
300 | 複数の選択肢 |
301 | 永久に移動しました |
302 | 一時的に見つかった/移動 |
303 | 他を参照してください |
304 | 変更されていません |
305 | プロキシを使用します |
306 | 未使用 |
307 | 一時的なリダイレクト |
308 | 永久リダイレクト |
400 | 要求の形式が正しくありません |
401 | 不正 |
402 | 支払いが必要です |
403 | 禁断 |
404 | 見つかりません |
405 | 許可されていない方法 |
406 | 受け入れられません |
407 | プロキシ認証が必要です |
408 | リクエストタイムアウト |
409 | 対立 |
410 | 消えた |
411 | 必要な長さ |
412 | 前提条件は失敗しました |
413 | ペイロードが大きすぎます |
414 | URIが長すぎます |
415 | サポートされていないメディアタイプ |
416 | 範囲は満足できません |
417 | 期待は失敗しました |
418 | 私はティーポットです |
419 | リソースに不十分なスペース |
420 | メソッド障害 |
421 | 誤った要求 |
422 | 処理できないコンテンツ |
423 | ロックされています |
424 | 依存関係に失敗しました |
425 | 早すぎる |
426 | アップグレードが必要です |
428 | 前提条件が必要です |
429 | リクエストが多すぎます |
430 | 大きすぎるヘッダーフィールドをリクエストします |
431 | 大きすぎるヘッダーフィールドをリクエストします |
440 | ログインタイムアウト |
444 | 応答なし |
449 | で再試行します |
450 | Windows Parental Controlsによってブロックされます |
451 | 法的理由で利用できません |
460 | ロードバランサーのアイドルタイムアウトの前のクライアントクローズド接続 |
463 | 30を超えるIPアドレスを備えたX-Forward-forヘッダー |
494 | ヘッダーが大きすぎるとリクエストします |
495 | SSL証明書エラー |
496 | SSL証明書が必要です |
497 | HTTPリクエストはHTTPSポートに送信されました |
498 | トークンの有効期限/無効 |
499 | クライアントのクローズドリクエスト |
500 | 内部サーバーエラー |
501 | 実装されていません |
502 | 悪いゲートウェイ |
503 | サービスは利用できません |
504 | ゲートウェイタイムアウト |
505 | HTTPバージョンはサポートされていません |
506 | バリアントも交渉します |
507 | ストレージが不十分です |
508 | ループが検出されました |
509 | 帯域幅の制限が超えました |
510 | 拡張されていません |
511 | ネットワーク認証が必要です |
520 | 不明なエラー |
521 | Webサーバーがダウンしています |
522 | 接続がタイムアウトしました |
523 | 起源は到達できません |
524 | タイムアウトが発生しました |
525 | SSLハンドシェイクは失敗しました |
526 | 無効なSSL証明書 |
527 | Railgunエラー |
529 | サイトは過負荷です |
530 | サイトは凍結されています |
540 | 一時的に無効になっています |
561 | 不正 |
598 | ネットワーク読み取りタイムアウトエラー |
599 | ネットワーク接続タイムアウトエラー |
783 | 予期しないトークン |
次のように、ステータスコードの理由フレーズを照会できます。
$ java -jar httpstatus-1.1.1.jar 404 500
404: Not Found
500: Internal Server Errorステータスコードが指定されていない場合、すべてが印刷されます。
$ java -jar httpstatus-1.1.1.jar
100: Continue
101: Switching Protocols
102: Processing
103: Early Hints
110: Response is Stale
111: Revalidation Failed
112: Disconnected Operation
113: Heuristic Expiration
199: Miscellaneous Warning
200: OK
201: Created
202: Accepted
203: Non-Authoritative Information
...応答クラスでステータスコードを印刷することもできます。
$ java -jar httpstatus-1.1.1.jar 2xx
200: OK
201: Created
202: Accepted
203: Non-Authoritative Information
... このプロジェクトに貢献したい場合は、GitHubリポジトリをクローンするだけです。
git clone [email protected]:ethauvin/HttpStatus.git次に、BLDを使用して構築します。
cd HttpStatus
./bld compileこのプロジェクトには、Intellij Ideaプロジェクト構造があります。すべての依存関係がダウンロードされた後、それを開くだけでコードを閲覧できます。