Servlet - Codici di stato Http

Il formato della richiesta HTTP e dei messaggi di risposta HTTP sono simili e avranno la seguente struttura:

  • Una riga di stato iniziale + CRLF (Carriage Return + Line Feed ie New Line)

  • Zero o più righe di intestazione + CRLF

  • Una riga vuota, cioè un CRLF

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

Ad esempio, un'intestazione di risposta del server ha il seguente aspetto:

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

La riga di stato è composta dalla versione HTTP (HTTP / 1.1 nell'esempio), un codice di stato (200 nell'esempio) e un messaggio molto breve corrispondente al codice di stato (OK nell'esempio).

Di seguito è riportato un elenco di codici di stato HTTP e messaggi associati che potrebbero essere restituiti dal server Web:

Codice Messaggio Descrizione
100 Continua Solo una parte della richiesta è stata ricevuta dal server, ma fino a quando non è stata rifiutata, il client dovrebbe continuare con la richiesta
101 Passaggio da un protocollo all'altro Il server cambia protocollo.
200 ok La richiesta è OK
201 Creato La richiesta è completa e viene creata una nuova risorsa
202 Accettato La richiesta viene accettata per l'elaborazione, ma l'elaborazione non è completa.
203 Informazioni non autorevoli  
204 Nessun contenuto  
205 Reimposta contenuto  
206 Contenuto parziale  
300 Scelte multiple Un elenco di collegamenti. L'utente può selezionare un collegamento e andare a quella posizione. Massimo cinque indirizzi
301 trasferito La pagina richiesta è stata spostata su un nuovo URL
302 Trovato La pagina richiesta è stata temporaneamente spostata su un nuovo URL
303 Vedi altro La pagina richiesta può essere trovata sotto un URL diverso
304 Non modificato  
305 Usa un proxy  
306 Inutilizzato Questo codice è stato utilizzato in una versione precedente. Non è più utilizzato, ma il codice è riservato
307 Reindirizzamento temporaneo La pagina richiesta è stata temporaneamente spostata su un nuovo URL.
400 Brutta richiesta Il server non ha compreso la richiesta
401 Non autorizzato La pagina richiesta richiede un nome utente e una password
402 Pagamento richiesto Non puoi ancora usare questo codice
403 Vietato È vietato l'accesso alla pagina richiesta
404 Non trovato Il server non riesce a trovare la pagina richiesta.
405 operazione non permessa Il metodo specificato nella richiesta non è consentito.
406 Non accettabile Il server può generare solo una risposta non accettata dal client.
407 Autenticazione proxy richiesta È necessario autenticarsi con un server proxy prima di poter servire questa richiesta.
408 Richiedi timeout La richiesta ha richiesto più tempo di quanto il server fosse disposto ad attendere.
409 Conflitto La richiesta non può essere completata a causa di un conflitto.
410 Andato La pagina richiesta non è più disponibile.
411 Lunghezza richiesta La "Content-Length" non è definita. Il server non accetterà la richiesta senza di essa.
412 Precondizione non riuscita La precondizione data nella richiesta valutata come falsa dal server.
413 Entità richiesta troppo grande Il server non accetterà la richiesta, perché l'entità della richiesta è troppo grande.
414 URL richiesta troppo lungo Il server non accetterà la richiesta, perché l'URL è troppo lungo. Si verifica quando si converte una richiesta "post" in una richiesta "get" con una lunga query di informazioni.
415 Tipo di supporto non supportato Il server non accetterà la richiesta, perché il tipo di supporto non è supportato.
417 Aspettativa fallita  
500 Errore interno del server La richiesta non è stata completata. Il server ha incontrato una condizione imprevista.
501 Non implementato La richiesta non è stata completata. Il server non supportava la funzionalità richiesta.
502 Bad Gateway La richiesta non è stata completata. Il server ha ricevuto una risposta non valida dal server upstream.
503 Servizio non disponibile La richiesta non è stata completata. Il server è temporaneamente in sovraccarico o inattivo.
504 Timeout gateway Il gateway è scaduto.
505 Versione HTTP non supportata Il server non supporta la versione "protocollo http".

Metodi per impostare il codice di stato HTTP

I seguenti metodi possono essere utilizzati per impostare il codice di stato HTTP nel programma servlet. Questi metodi sono disponibili con l' oggetto HttpServletResponse .

Sr.No. Metodo e descrizione
1

public void setStatus ( int statusCode )

Questo metodo imposta un codice di stato arbitrario. Il metodo setStatus accetta un int (il codice di stato) come argomento. Se la tua risposta include un codice di stato speciale e un documento, assicurati di chiamare setStatus prima di restituire effettivamente qualsiasi contenuto con PrintWriter .

2

public void sendRedirect(String url)

This method generates a 302 response along with a Location header giving the URL of the new document

3

public void sendError(int code, String message)

This method sends a status code (usually 404) along with a short message that is automatically formatted inside an HTML document and sent to the client.

HTTP Status Code Example

Following is the example which would send a 407 error code to the client browser and browser would show you "Need authentication!!!" message.

// Import required java libraries
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.util.*;

// Extend HttpServlet class
public class showError extends HttpServlet {
 
   // Method to handle GET method request.
   public void doGet(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException {
      
      // Set error code and reason.
      response.sendError(407, "Need authentication!!!" );
   }
   
   // Method to handle POST method request.
   public void doPost(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException {
      
      doGet(request, response);
   }
}

Now calling the above servlet would display the following result −

HTTP Status 407 - Need authentication!!!

type Status report

messageNeed authentication!!!

descriptionThe client must first authenticate itself with the proxy (Need authentication!!!).

Apache Tomcat/5.5.29