JSP - Codes d'état HTTP
Dans ce chapitre, nous aborderons les codes d'état Http dans JSP. Le format de la requête HTTP et des messages de réponse HTTP sont similaires et auront la structure suivante -
Une ligne d'état initial + CRLF (Retour chariot + Saut de ligne c'est-à-dire Nouvelle ligne)
Zéro ou plusieurs lignes d'en-tête + CRLF
Une ligne vierge ie. un CRLF
Un corps de message facultatif comme un fichier, des données de requête ou une sortie de requête.
Par exemple, un en-tête de réponse de serveur ressemble à ce qui suit -
HTTP/1.1 200 OK
Content-Type: text/html
Header2: ...
...
HeaderN: ...
(Blank Line)
<!doctype ...>
<html>
<head>...</head>
<body>
...
</body>
</html>
La ligne d'état se compose du HTTP version (HTTP/1.1 in the example), un code d'état (200 dans l'exemple), et un message très court correspondant au code d'état (OK in the example).
Le tableau suivant répertorie les codes d'état HTTP et les messages associés qui peuvent être renvoyés par le serveur Web -
Code | Message | La description |
---|---|---|
100 | Continuer | Seule une partie de la demande a été reçue par le serveur, mais tant qu'elle n'a pas été rejetée, le client doit continuer avec la demande |
101 | Protocoles de commutation | Le serveur change de protocole. |
200 | D'accord | La demande est OK |
201 | Établi | La demande est terminée et une nouvelle ressource est créée |
202 | Accepté | La demande est acceptée pour le traitement, mais le traitement n'est pas terminé. |
203 | Informations ne faisant pas autorité | |
204 | Pas de contenu | |
205 | Réinitialiser le contenu | |
206 | Contenu partiel | |
300 | Choix multiples | Une liste de liens; l'utilisateur peut sélectionner un lien et accéder à cet emplacement. Maximum de cinq adresses. |
301 | Déplacé définitivement | La page demandée a été déplacée vers une nouvelle URL. |
302 | A trouvé | La page demandée a été déplacée temporairement vers une nouvelle URL. |
303 | Voir autre | La page demandée se trouve sous une URL différente. |
304 | Non modifié | |
305 | Utiliser un proxy | |
306 | Inutilisé | Ce code était utilisé dans une version précédente. Il n'est plus utilisé, mais le code est réservé. |
307 | Redirection temporaire | La page demandée a été déplacée temporairement vers une nouvelle URL. |
400 | Mauvaise Demande | Le serveur n'a pas compris la demande. |
401 | Non autorisé | La page demandée a besoin d'un nom d'utilisateur et d'un mot de passe. |
402 | Paiement Requis | Vous ne pouvez pas encore utiliser ce code. |
403 | Interdit | L'accès à la page demandée est interdit |
404 | Pas trouvé | Le serveur ne trouve pas la page demandée. |
405 | Méthode Non Autorisée | La méthode spécifiée dans la demande n'est pas autorisée. |
406 | Pas acceptable | Le serveur ne peut générer qu'une réponse non acceptée par le client. |
407 | Authentification proxy requise | Vous devez vous authentifier auprès d'un serveur proxy avant que cette demande puisse être servie. |
408 | Délai d'expiration de la demande | La demande a pris plus de temps que le serveur était prêt à attendre. |
409 | Conflit | La demande n'a pas pu être exécutée en raison d'un conflit. |
410 | Disparu | La page demandée n'est plus disponible. |
411 | Longueur requise | Le "Content-Length" n'est pas défini. Le serveur n'acceptera pas la demande sans elle. |
412 | La condition préalable a échoué | La condition préalable donnée dans la requête évaluée à false par le serveur. |
413 | Demande d'entité trop grande | Le serveur n'acceptera pas la demande, car l'entité de demande est trop volumineuse. |
414 | Request-url trop long | Le serveur n'acceptera pas la demande, car l'URL est trop longue. Cela se produit lorsque vous convertissez une demande «post» en une demande «get» avec des informations de requête longues. |
415 | Type de support non pris en charge | Le serveur n'acceptera pas la demande, car le type de média n'est pas pris en charge. |
417 | L'attente a échoué | |
500 | Erreur Interne du Serveur | La demande n'a pas été complétée. Le serveur a rencontré une condition inattendue. |
501 | Pas mis en œuvre | La demande n'a pas été complétée. Le serveur ne prenait pas en charge la fonctionnalité requise. |
502 | Mauvaise passerelle | La demande n'a pas été complétée. Le serveur a reçu une réponse non valide du serveur en amont. |
503 | Service indisponible | La demande n'a pas été complétée. Le serveur est temporairement en surcharge ou en panne. |
504 | Délai d'expiration de la passerelle | La passerelle a expiré. |
505 | Version HTTP non prise en charge | Le serveur ne prend pas en charge le "http protocol" version. |
Méthodes pour définir le code d'état HTTP
Les méthodes suivantes peuvent être utilisées pour définir le code d'état HTTP dans votre programme de servlet. Ces méthodes sont disponibles avec l' objet HttpServletResponse .
S.No. | Méthode et description |
---|---|
1 | public void setStatus ( int statusCode ) Cette méthode définit un code d'état arbitraire. La méthode setStatus prend un int (le code d'état) comme argument. Si votre réponse comprend un code de statut spécial et un document, n'oubliez pas d'appelersetStatusavant de retourner le contenu avec PrintWriter . |
2 | public void sendRedirect(String url) Cette méthode génère une réponse 302 avec un en- tête Location donnant l'URL du nouveau document. |
3 | public void sendError(int code, String message) Cette méthode envoie un code d'état (généralement 404) avec un court message qui est automatiquement mis en forme dans un document HTML et envoyé au client. |
Exemple de code d'état HTTP
L'exemple suivant montre comment un code d'erreur 407 est envoyé au navigateur client. Après cela, le navigateur vous montrera "Need authentication!!!" message.
<html>
<head>
<title>Setting HTTP Status Code</title>
</head>
<body>
<%
// Set error code and reason.
response.sendError(407, "Need authentication!!!" );
%>
</body>
</html>
Vous recevrez la sortie suivante -
HTTP Status 407 - Need authentication!!!
type Status report
message Need authentication!!!
description The client must first authenticate itself with the proxy (Need authentication!!!).
Apache Tomcat/5.5.29
Pour vous familiariser avec les codes d'état HTTP, essayez de définir différents codes d'état et leur description.