Pustaka tag JSP sederhana untuk menampilkan kode, alasan, penyebab, dan/atau pesan untuk kode status HTTP di halaman kesalahan JSP.
Misalnya:
<%@ 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 >
...atau
<%@ page isErrorPage = " true " import = " net.thauvin.erik.httpstatus.Reasons " %>
<%= Reasons . getReasonPhrase(pageContext . getErrorData() . getStatusCode()) % >akan ditampilkan pada kode status 501:
Not Implemented Sertakan yang berikut dalam file build.gradle Anda:
repositories {
mavenCentral()
}
dependencies {
implementation ' net.thauvin.erik.httpstatus:httpstatus:1.1.1 '
} Sertakan yang berikut dalam file build bld Anda:
scope ( compile ). include (
dependency ( "net.thauvin.erik.httpstatus" , "httpstatus" , version ( 1 , 1 , 0 ))
); Sebagai artefak Maven :
< dependency >
< groupId >net.thauvin.erik.httpstatus</ groupId >
< artifactId >httpstatus</ artifactId >
< version >1.1.1</ version >
</ dependency > Tag <hs:cause/> menampilkan penyebab kode status http saat ini, jika ada. Singkatan untuk:
<%= pageContext . getErrorData() . getThrowable() . getCause() . getLocalizedMessage() % >Atribut opsional adalah:
| Atribut | Keterangan |
|---|---|
default | Nilai mundur ke output, jika tidak ada penyebab |
escapeXml | Konversi <,>, &, ', "ke kode entitas yang sesuai. Nilai true secara default. |
Tag <hs:code/> menampilkan kode status http saat ini, jika ada. Singkatan untuk:
<%= pageContext . getErrorData() . getStatusCode() % > Tag <hs:message/> menampilkan pesan kesalahan saat ini, jika ada. Singkatan untuk:
<%= request . getAttribute( " javax.servlet.error.message " ) % >Atribut opsional adalah:
| Atribut | Keterangan |
|---|---|
default | Nilai fallback ke output, jika tidak ada pesan kesalahan yang tersedia. |
escapeXml | Konversi <,>, &, ', "ke kode entitas yang sesuai. Nilai true secara default. |
Tag <hs:reason/> menampilkan alasan kode status HTTP, jika ada. Atribut opsional adalah:
| Atribut | Keterangan |
|---|---|
default | Nilai fallback ke output, jika tidak ada alasan yang tersedia. |
code | Kode Kesalahan Status HTTP. Jika tidak ditentukan, kode status saat ini digunakan. |
escapeXml | Konversi <,>, &, ', "ke kode entitas yang sesuai. Nilai true secara default. |
StatusCode Bean dapat digunakan untuk memeriksa kelas kesalahan kode status. Misalnya, menggunakan 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 >atau di servlet:
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 {
// ...
}
}
}
} Metode StatusCode Bean adalah:
| Metode | Keterangan |
|---|---|
getReason | Mengembalikan alasan kode status (misalnya: Internal Server Error ) |
isClientError | Periksa apakah kode status adalah kesalahan klien. |
isError | Periksa apakah kode status adalah kesalahan server atau klien. |
isInfo | Periksa apakah kode status informasi. |
isRedirect | Periksa apakah kode status adalah pengalihan. |
isServerError | Periksa apakah kode status adalah kesalahan server. |
isSuccess | Memeriksa apakah kode status berhasil. ( OK ) |
isValid | Memeriksa apakah kode status valid. |
Alasannya didefinisikan dalam properti ResourceBundle sebagai berikut:
| Kode status | Alasan |
|---|---|
100 | Melanjutkan |
101 | Switching protocols |
102 | Pengolahan |
103 | Petunjuk awal |
110 | Responsnya basi |
111 | Revalidasi gagal |
112 | Operasi yang terputus |
113 | Kedaluwarsa heuristik |
199 | Peringatan Lain -lain |
200 | OKE |
201 | Dibuat |
202 | Diterima |
203 | Informasi non-otoritatif |
204 | Tidak ada konten |
205 | Reset Konten |
206 | Konten parsial |
207 | Multi-status |
208 | Sudah dilaporkan |
214 | Transformasi diterapkan |
218 | Ini baik -baik saja |
226 | Saya digunakan |
299 | Peringatan gigih lain -lain |
300 | Beberapa pilihan |
301 | Bergerak secara permanen |
302 | Ditemukan/dipindahkan sementara |
303 | Lihat yang lain |
304 | Tidak dimodifikasi |
305 | Gunakan proxy |
306 | Tidak digunakan |
307 | Pengalihan sementara |
308 | Pengalihan permanen |
400 | Permintaan yang buruk |
401 | Tidak sah |
402 | Pembayaran diperlukan |
403 | Terlarang |
404 | Tidak ditemukan |
405 | Metode tidak diizinkan |
406 | Tidak bisa diterima |
407 | Diperlukan otentikasi proxy |
408 | Meminta batas waktu |
409 | Konflik |
410 | Hilang |
411 | Panjang dibutuhkan |
412 | Prasyarat gagal |
413 | Muatan terlalu besar |
414 | Uri terlalu lama |
415 | Jenis media yang tidak didukung |
416 | Kisaran tidak memuaskan |
417 | Harapan gagal |
418 | Saya seorang teko |
419 | Ruang yang tidak mencukupi pada sumber daya |
420 | Kegagalan metode |
421 | Permintaan salah arah |
422 | Konten yang tidak dapat diproses |
423 | Terkunci |
424 | Ketergantungan yang gagal |
425 | Terlalu dini |
426 | Peningkatan diperlukan |
428 | Prasyarat diperlukan |
429 | Terlalu banyak permintaan |
430 | Minta header bidang terlalu besar |
431 | Minta header bidang terlalu besar |
440 | Batas waktu login |
444 | Tidak ada tanggapan |
449 | Coba lagi dengan |
450 | Diblokir oleh kontrol orang tua windows |
451 | Tidak tersedia karena alasan hukum |
460 | Klien Tertutup Klien Sebelum Load Balancer Idle Timeout |
463 | HEADER X-FORWARDED-FOR dengan lebih dari 30 alamat IP |
494 | Minta header terlalu besar |
495 | Kesalahan Sertifikat SSL |
496 | Diperlukan sertifikat SSL |
497 | Permintaan http dikirim ke port https |
498 | Token kedaluwarsa/tidak valid |
499 | Permintaan tertutup klien |
500 | Kesalahan server internal |
501 | Tidak diimplementasikan |
502 | Gerbang yang buruk |
503 | Layanan tidak tersedia |
504 | Timeout Gateway |
505 | Versi http tidak didukung |
506 | Varian juga bernegosiasi |
507 | Penyimpanan yang tidak mencukupi |
508 | Loop terdeteksi |
509 | Batas bandwidth terlampaui |
510 | Tidak diperpanjang |
511 | Otentikasi jaringan diperlukan |
520 | Kesalahan yang tidak diketahui |
521 | Server web sedang down |
522 | Koneksi diatur waktunya |
523 | Asal tidak terjangkau |
524 | Batas waktu terjadi |
525 | Jabat tangan SSL gagal |
526 | Sertifikat SSL tidak valid |
527 | Kesalahan railgun |
529 | Situs kelebihan beban |
530 | Situs dibekukan |
540 | Cacat sementara |
561 | Tidak sah |
598 | Kesalahan batas waktu baca jaringan |
599 | Jaringan Hubungkan Kesalahan Batas Waktu |
783 | Token tak terduga |
Anda dapat menanyakan frasa alasan untuk kode status sebagai berikut:
$ java -jar httpstatus-1.1.1.jar 404 500
404: Not Found
500: Internal Server ErrorJika tidak ada kode status yang ditentukan, semua akan dicetak:
$ 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
...Anda juga dapat mencetak kode status dengan kelas tanggapan:
$ java -jar httpstatus-1.1.1.jar 2xx
200: OK
201: Created
202: Accepted
203: Non-Authoritative Information
... Jika Anda ingin berkontribusi pada proyek ini, yang harus Anda lakukan adalah mengkloning repositori GitHub:
git clone [email protected]:ethauvin/HttpStatus.gitKemudian gunakan BLD untuk membangun:
cd HttpStatus
./bld compileProyek ini memiliki struktur proyek Ide IntelliJ. Anda bisa membukanya setelah semua dependensi diunduh dan membaca dengan teliti kode.