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.