JSP - Codici di stato Http

In questo capitolo, discuteremo i codici di stato HTTP in JSP. 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 es. New Line)

  • Zero o più righe di intestazione + CRLF

  • Una riga vuota, ad es. 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 da HTTP version (HTTP/1.1 in the example), un codice di stato (200 nell'esempio) e un messaggio molto breve corrispondente al codice di stato (OK in the example).

La tabella seguente elenca i codici di stato HTTP e i 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ò solo generare una risposta che 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 "lunghezza del contenuto" 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. Ciò si verifica quando si converte una richiesta "post" in una richiesta "get" con informazioni di query lunghe.
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 l'estensione "http protocol" versione.

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 .

S.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 chiamaresetStatusprima di restituire effettivamente qualsiasi contenuto con PrintWriter .

2

public void sendRedirect(String url)

Questo metodo genera una risposta 302 insieme a un'intestazione Location che fornisce l'URL del nuovo documento.

3

public void sendError(int code, String message)

Questo metodo invia un codice di stato (solitamente 404) insieme a un breve messaggio che viene automaticamente formattato all'interno di un documento HTML e inviato al client.

Esempio di codice di stato HTTP

L'esempio seguente mostra come viene inviato un codice di errore 407 al browser del client. Dopodiché, il browser ti mostrerà "Need authentication!!!" Messaggio.

<html>
   <head>
      <title>Setting HTTP Status Code</title>
   </head>
   
   <body>
      <%
         // Set error code and reason.
         response.sendError(407, "Need authentication!!!" );
      %>
   </body>
</html>

Riceverai il seguente output:

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

Per familiarizzare con i codici di stato HTTP, prova a impostare codici di stato diversi e la loro descrizione.