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.