Une bibliothèque de balises JSP simple pour afficher le code, la raison, la cause et / ou le message des codes d'état HTTP dans les pages d'erreur JSP.
Par exemple:
<%@ 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 >
...ou
<%@ page isErrorPage = " true " import = " net.thauvin.erik.httpstatus.Reasons " %>
<%= Reasons . getReasonPhrase(pageContext . getErrorData() . getStatusCode()) % >s'afficherait sur un code d'état 501:
Not Implemented Incluez ce qui suit dans votre fichier build.gradle :
repositories {
mavenCentral()
}
dependencies {
implementation ' net.thauvin.erik.httpstatus:httpstatus:1.1.1 '
} Incluez les éléments suivants dans votre fichier de construction bld :
scope ( compile ). include (
dependency ( "net.thauvin.erik.httpstatus" , "httpstatus" , version ( 1 , 1 , 0 ))
); En tant qu'artefact Maven :
< dependency >
< groupId >net.thauvin.erik.httpstatus</ groupId >
< artifactId >httpstatus</ artifactId >
< version >1.1.1</ version >
</ dependency > La balise <hs:cause/> affiche la cause du code d'état HTTP actuel, le cas échéant. Un sténographie pour:
<%= pageContext . getErrorData() . getThrowable() . getCause() . getLocalizedMessage() % >Les attributs facultatifs sont:
| Attribut | Description |
|---|---|
default | La valeur de retour à la sortie, si aucune cause n'est |
escapeXml | Converties <,>, &, ', "à leurs codes d'entité correspondants. La valeur est true par défaut. |
La balise <hs:code/> affiche le code d'état HTTP actuel, le cas échéant. Un sténographie pour:
<%= pageContext . getErrorData() . getStatusCode() % > La balise <hs:message/> affiche le message d'erreur actuel, le cas échéant. Un sténographie pour:
<%= request . getAttribute( " javax.servlet.error.message " ) % >Les attributs facultatifs sont:
| Attribut | Description |
|---|---|
default | La valeur de secours à la sortie, si aucun message d'erreur n'est disponible. |
escapeXml | Converties <,>, &, ', "à leurs codes d'entité correspondants. La valeur est true par défaut. |
La balise <hs:reason/> affiche la raison d'un code d'état HTTP, le cas échéant. Les attributs facultatifs sont:
| Attribut | Description |
|---|---|
default | La valeur de secours à la sortie, si aucune raison n'est disponible. |
code | Le code d'erreur d'état HTTP. Si non spécifié, le code d'état actuel est utilisé. |
escapeXml | Converties <,>, &, ', "à leurs codes d'entité correspondants. La valeur est true par défaut. |
Le Bean StatusCode peut être utilisé pour vérifier la classe de l'erreur du code d'état. Par exemple, en utilisant le 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 >ou dans un 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 {
// ...
}
}
}
} Les méthodes de bean StatusCode sont:
| Méthode | Description |
|---|---|
getReason | Renvoie la raison du code d'état (par exemple: Internal Server Error ) |
isClientError | Vérifie si le code d'état est une erreur client. |
isError | Vérifie si le code d'état est une erreur de serveur ou client. |
isInfo | Vérifie si le code d'état est informatif. |
isRedirect | Vérifie si le code d'état est une redirection. |
isServerError | Vérifie si le code d'état est une erreur de serveur. |
isSuccess | Vérifie si le code d'état est un succès. ( D' OK ) |
isValid | Vérifie si le code d'état est valide. |
Les raisons sont définies dans les propriétés des ressources de ressource comme suit:
| Code d'état | Raison |
|---|---|
100 | Continuer |
101 | Protocoles de commutation |
102 | Traitement |
103 | Premiers conseils |
110 | La réponse est périmée |
111 | La revalidation a échoué |
112 | Opération déconnectée |
113 | Expiration heuristique |
199 | Avertissement divers |
200 | D'ACCORD |
201 | Créé |
202 | Accepté |
203 | Informations non autoritaires |
204 | Pas de contenu |
205 | Réinitialiser le contenu |
206 | Contenu partiel |
207 | Multi-statut |
208 | Déjà signalé |
214 | Transformation appliquée |
218 | C'est bien |
226 | Je suis utilisé |
299 | Avertissement persistant divers |
300 | Choix multiples |
301 | Déplacé de façon permanente |
302 | Trouvé / déplacé temporairement |
303 | Voir les autres |
304 | Non modifié |
305 | Utiliser le proxy |
306 | Inutilisé |
307 | Redirection temporaire |
308 | Redirection permanente |
400 | Mauvaise demande |
401 | Non autorisé |
402 | Paiement requis |
403 | Interdit |
404 | Pas trouvé |
405 | Méthode non autorisée |
406 | Pas acceptable |
407 | Authentification proxy requise |
408 | Demander un délai d'expiration |
409 | Conflit |
410 | Disparu |
411 | Longueur requise |
412 | La condition préalable a échoué |
413 | Charge utile trop grande |
414 | Uri trop long |
415 | Type de support non pris en charge |
416 | Gamme non satisfaisable |
417 | L'attente a échoué |
418 | Je suis une théière |
419 | Espace insuffisant sur les ressources |
420 | Échec de la méthode |
421 | Demande mal dirigée |
422 | Contenu non reproductable |
423 | Fermé |
424 | Dépendance échouée |
425 | Trop tôt |
426 | Mise à niveau requise |
428 | Condition préalable requise |
429 | Trop de demandes |
430 | Demander des champs d'en-tête trop grands |
431 | Demander des champs d'en-tête trop grands |
440 | Timeout de connexion |
444 | Aucune réponse |
449 | Réessayer avec |
450 | Bloqué par Windows Parental Controls |
451 | INDICABLE pour des raisons juridiques |
460 | Connexion fermée du client avant le délai de chargement de l'équilibreur |
463 | En-tête X-Forwarded avec plus de 30 adresses IP |
494 | Demander l'en-tête trop grand |
495 | Erreur de certificat SSL |
496 | Certificat SSL requis |
497 | Demande http envoyée au port https |
498 | Jeton expiré / non valide |
499 | Demande de fermeture du client |
500 | Erreur interne du serveur |
501 | Non implémenté |
502 | Mauvaise passerelle |
503 | service non disponible |
504 | Timeout de passerelle |
505 | La version HTTP n'est pas prise en charge |
506 | Variant négocie également |
507 | Stockage insuffisant |
508 | Boucle détectée |
509 | Limite de bande passante dépassée |
510 | Non étendu |
511 | Authentification du réseau requise |
520 | Erreur inconnue |
521 | Le serveur Web est en panne |
522 | Connexion expirée |
523 | L'origine est inaccessible |
524 | Un délai d'attente s'est produit |
525 | La poignée de main SSL a échoué |
526 | Certificat SSL non valide |
527 | Erreur de rail |
529 | Le site est surchargé |
530 | Le site est gelé |
540 | Temporairement handicapé |
561 | Non autorisé |
598 | Erreur de délai de lecture du réseau |
599 | Erreur de délai d'expiration du réseau réseau |
783 | Jeton inattendu |
Vous pouvez interroger la phrase de raison pour les codes d'état comme suit:
$ java -jar httpstatus-1.1.1.jar 404 500
404: Not Found
500: Internal Server ErrorSi aucun code d'état n'est spécifié, tout sera imprimé:
$ 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
...Vous pouvez également imprimer les codes d'état par des classes de réponse:
$ java -jar httpstatus-1.1.1.jar 2xx
200: OK
201: Created
202: Accepted
203: Non-Authoritative Information
... Si vous souhaitez contribuer à ce projet, tout ce que vous avez à faire est de cloner le référentiel GitHub:
git clone [email protected]:ethauvin/HttpStatus.gitEnsuite, utilisez Bld pour construire:
cd HttpStatus
./bld compileLe projet a une structure de projet IntelliJ Idea. Vous pouvez simplement l'ouvrir après que toutes les dépendances ont été téléchargées et parcourent le code.