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.