English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Servlet HTTP 状态码

Il formato dei messaggi di richiesta HTTP e di risposta HTTP è simile, la struttura è la seguente:

  • Riga di stato iniziale + carattere di ritorno a capo (ritorno+invio)

  • Zero o più righe di intestazione + carattere di ritorno a capo

  • Una riga vuota, ossia il carattere di ritorno a capo

  • Un messaggio opzionale del corpo, come file, dati di ricerca o output di ricerca

Ad esempio, l'intestazione di risposta del server è come segue:

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

La riga di stato include la versione HTTP (nel presente esempio HTTP/1.1), un codice di stato (nel presente esempio 200) e un messaggio breve corrispondente al codice di stato (nel presente esempio OK).

Di seguito è riportata una lista di codici di stato HTTP possibili che possono essere restituiti dal server web e delle informazioni correlate:

CodiceMessaggioDescrizione
100ContinuaSolamente una parte della richiesta è stata ricevuta dal server, ma se non è stata rifiutata, il client deve continuare la richiesta.
101Passaggio dei protocolliIl server sta passando a un nuovo protocollo.
200OKLa richiesta è stata eseguita con successo.
201CreatoLa richiesta è completa e crea una nuova risorsa.
202AccettatoLa richiesta è stata accettata e elaborata, ma l'elaborazione non è completa.
203Informazioni non autentiche 
204Nessun contenuto 
205Ripristina contenuto 
206Contenuto parziale 
300Molte scelteElenco di link. L'utente può selezionare un link per accedere a tale posizione. Massimo cinque indirizzi.
301Spostato permanentementeLa pagina richiesta è stata trasferita a un nuovo URL.
302FoundLa pagina richiesta è stata temporaneamente spostata a un nuovo URL.
302TrovatoVedi altro
La pagina richiesta può essere trovata in un altro URL diverso.304 
Non modificatoUsa il proxy 
306Non utilizzatoUtilizza questo codice nella versione precedente. Ora non è più utilizzato, ma il codice è stato conservato.
307Redirezione temporaneaLa pagina richiesta è stata temporaneamente spostata a un nuovo URL.
400Richiesta non validaIl server non comprende la richiesta.
401Non autorizzatoLa pagina richiesta richiede nome utente e password.
402Richiesto pagamentoNon puoi utilizzare questo codice ancora.
403VietatoAccesso alla pagina richiesta vietato.
404Non trovatoIl server non può trovare la pagina richiesta.
405Metodo non permessoIl metodo specificato nella richiesta non è permesso.
406Non accettabileIl server genera solo una risposta non accettabile per il client.
407Richiesta di autenticazione del proxyPrima di inviare la richiesta, devi utilizzare l'autenticazione del server proxy.
408Timeout della richiestaLa richiesta richiede più tempo di quanto il server possa aspettare, timeout.
409ConflittoLa richiesta non può essere completata a causa di conflitti.
410ScomparsoLa pagina richiesta non è più disponibile.
411Richiesto il numero di byteNon definito "Content-Length". Il server non può elaborare le informazioni di richiesta del client che non contengono "Content-Length".
412Condizioni preventive non soddisfatteLe condizioni preventive indicate nella richiesta sono state valutate come false dal server.
413Entità della richiesta troppo grandeIl server non accetta la richiesta perché l'entità della richiesta è troppo grande.
414URL della richiesta troppo lungoIl server non accetta la richiesta perché l'URL è troppo lungo. Si verifica quando si trasforma una richiesta "post" in una richiesta "get" con informazioni di ricerca lunghe.
415Tipo di media non supportatoIl server non accetta la richiesta perché il tipo di media non è supportato.
417Fallimento delle aspettative 
500Errore interno del serverRichiesta non completata. Il server ha incontrato una situazione imprevista.
501Not Implemented未完成的请求。服务器不支持所需的功能。
502Bad Gateway未完成的请求。服务器从上游服务器收到无效响应。
503Service Unavailable未完成的请求。服务器暂时超载或死机。
504Gateway Timeout网关超时。
505HTTP Version Not Supported服务器不支持"HTTP协议"版本。

设置 HTTP 状态代码的方法

下面的方法可用于在 Servlet 程序中设置 HTTP 状态码。这些方法通过 HttpServletResponse 对象可用。

序号方法 & 描述
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 文档内部自动格式化并发送到客户端的短消息。

HTTP 状态码示例

下面的实例将 407 错误代码发送到客户端浏览器,浏览器会显示 "需要身份验证!!!" 消息。

// 导入必需的 java 库
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.util.*;
import javax.servlet.annotation.WebServlet;
@WebServlet("/showError")
// 扩展 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);
  }
}

Now, calling the above Servlet will display the following result:

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