Code d'état HTTP du servlet


Le format des messages de requête HTTP et de réponse HTTP est similaire, et la structure est la suivante :

  • Ligne d'état initial + retour chariot et saut de ligne (retour chariot + saut de ligne)

  • Zéro ou plusieurs lignes de titre + retours chariot et sauts de ligne

  • Une ligne vierge, c'est-à-dire retours chariot et sauts de ligne

  • Un corps de message facultatif, tel qu'un fichier, des données de requête ou un résultat de requête

Par exemple, l'en-tête de réponse du serveur ressemble à ceci :

HTTP/1.1 200 OK
Content-Type: text/html
Header2: ...
...
HeaderN: ...
  (Blank Line)
<!doctype ...>
<html>
<head>...</head>
<body>
...
</body>
</html>

Ligne d'état Comprend la version HTTP (dans ce cas, HTTP/1.1), un code d'état (dans ce cas, 200) et un court message correspondant au code d'état (dans ce cas, OK).

Ce qui suit est une liste de codes d'état HTTP et d'informations associées qui peuvent être renvoyées par le serveur Web :

CodeMessageDescription
100Continuer Seule une partie de la requête a été reçue par le serveur, mais tant qu'elle n'a pas été rejetée, le client doit poursuivre la requête.
101Protocoles de commutationProtocoles de commutation de serveur.
200OKDemande réussie.
201CrééLa requête est terminée et crée une nouvelle ressource.
202AcceptéLa demande a été acceptée pour traitement, mais le traitement était incomplet.
203Informations ne faisant pas autorité
204Aucun contenu
205Réinitialiser le contenu
206Contenu partiel
300Choix multiplesListe de liens. Les utilisateurs peuvent sélectionner un lien pour accéder à cet emplacement. Jusqu'à cinq adresses.
301Déplacée définitivementLa page demandée a été déplacée vers une nouvelle URL.
302TrouvéLa page demandée a été temporairement déplacée vers une nouvelle URL.
303Voir AutreLa page demandée peut être trouvée sous une URL différente.
304Non modifié
305Utiliser un proxy
306InutiliséCe code a été utilisé dans les versions précédentes. Il n'est plus utilisé, mais le code reste.
307Redirection temporaireLa page demandée a été temporairement déplacée vers une nouvelle URL.
400Bad RequestLe serveur ne comprend pas la requête.
401Non autoriséLa page demandée nécessite un nom d'utilisateur et un mot de passe.
402Paiement requisVous ne pouvez pas encore utiliser ce code.
403InterditL'accès à la page demandée est interdit.
404IntrouvableLe serveur ne trouve pas la page demandée. .
405Méthode non autoriséeLa méthode spécifiée dans la demande n'est pas autorisée.
406Non acceptableLe serveur génère simplement une réponse qui n'est pas acceptée par le client.
407Authentification proxy requiseVous devez utiliser l'authentification du serveur proxy avant que la demande ne soit transmise.
408Délai d'expiration de la demandeLa demande a pris plus de temps que ce que le serveur pouvait attendre et a expiré.
409ConflitLa demande n'a pas pu être traitée en raison d'un conflit.
410PartiLa page demandée n'est plus disponible.
411Longueur requise"Content-Length" n'est pas défini. Le serveur ne peut pas gérer les informations de demande envoyées par le client sans Content-Length.
412Échec de la préconditionLa condition préalable donnée dans la requête a été évaluée par le serveur comme fausse.
413Entité de requête trop grandeLe serveur n'accepte pas la requête car l'entité de requête est trop grande.
414Request-url Too LongLe serveur n'a pas accepté la demande car l'URL était trop longue. Se produit lorsque vous convertissez une requête « post » en une requête « get » avec des informations de requête longues.
415Type de média non pris en charge Le serveur n'a pas accepté la demande car le type de média n'est pas pris en charge.
417Échec de l'attente
500Erreur interne du serveurDemandes en suspens. Le serveur a rencontré une situation inattendue.
501Non mis en œuvreDemande incomplète. Le serveur ne prend pas en charge les fonctionnalités requises.
502Passerelle incorrecteDemande incomplète. Le serveur a reçu une réponse non valide du serveur en amont.
503Service indisponibleDemande incomplète. Le serveur est temporairement surchargé ou en panne.
504Délai d'expiration de la passerelleDélai d'expiration de la passerelle.
505Version HTTP non prise en chargeLe serveur ne prend pas en charge la version "Protocole HTTP".

Méthodes pour définir le code d'état HTTP

La méthode suivante peut être utilisée pour définir le code d'état HTTP dans le programme Servlet. Ces méthodes sont disponibles via l'objet HttpServletResponse.

Numéro de sérieMéthode et description
1public void setStatus ( int statusCode )
序号方法 & 描述
1public void setStatus ( int statusCode )
该方法设置一个任意的状态码。setStatus 方法接受一个 int(状态码)作为参数。如果您的反应包含了一个特殊的状态码和文档,请确保在使用 PrintWriter 实际返回任何内容之前调用 setStatus。
2public void sendRedirect(String url)
该方法生成一个 302 响应,连同一个带有新文档 URL 的 Location 头。
3public void sendError(int code, String message)
该方法发送一个状态码(通常为 404),连同一个在 HTML 文档内部自动格式化并发送到客户端的短消息。
Cette méthode définit un code d'état arbitraire. La méthode setStatus accepte un int (code d'état) comme paramètre. Si votre réaction contient un code d'état spécial et une documentation, assurez-vous d'appeler setStatus avant de renvoyer quoi que ce soit en utilisant
PrintWriter

.

2public void sendRedirect(String url)Cette méthode génère une réponse 302, ainsi qu'un The

Location

en-tête de la nouvelle URL du document.
3public void sendError(int code, String message)

Cette méthode envoie un code d'état (généralement 404), accompagné d'un court message automatiquement formaté dans le document HTML et envoyé au client.

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

Exemple de code d'état HTTP
<🎜>L'exemple suivant envoie le code d'erreur 407 au navigateur client et le navigateur affichera Message "Besoin d'authentification !!!" <🎜>
// 导入必需的 java 库
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.util.*;

// 扩展 HttpServlet 类
public class showError extends HttpServlet {
 
  // 处理 GET 方法请求的方法
  public void doGet(HttpServletRequest request,
                    HttpServletResponse response)
            throws ServletException, IOException
  {
      // 设置错误代码和原因
      response.sendError(407, "Need authentication!!!" );
  }
  // 处理 POST 方法请求的方法
  public void doPost(HttpServletRequest request,
                     HttpServletResponse response)
      throws ServletException, IOException {
     doGet(request, response);
  }
}
<🎜>Maintenant, l'appel du servlet ci-dessus affichera les résultats suivants : <🎜>

Statut HTTP 407 - Authentification nécessaire !!!

<🎜>type Rapport de statut<🎜><🎜>message Besoin d'authentification !!!<🎜><🎜>description Le client doit d'abord s'authentifier auprès du proxy (Besoin d'authentification !!!).<🎜>