JSP - Risposta del server
In questo capitolo, discuteremo la risposta del server in JSP. Quando un server Web risponde a una richiesta HTTP, la risposta è generalmente costituita da una riga di stato, alcune intestazioni di risposta, una riga vuota e il documento. Una risposta tipica è simile a questa:
HTTP/1.1 200 OK
Content-Type: text/html
Header2: ...
...
HeaderN: ...
(Blank Line)
<!doctype ...>
<html>
<head>...</head>
<body>
...
</body>
</html>
La riga di stato è costituita dalla versione HTTP (HTTP/1.1 in the example), un codice di stato (200 in the example)e un messaggio molto breve corrispondente al codice di stato (OK in the example).
Di seguito è riportato un riepilogo delle intestazioni di risposta HTTP 1.1 più utili che risalgono al browser dal server web. Queste intestazioni sono spesso utilizzate nella programmazione web:
S.No. | Intestazione e descrizione |
---|---|
1 | Allow Questa intestazione specifica i metodi di richiesta (GET, POST, ecc.) che il server supporta. |
2 | Cache-Control Questa intestazione specifica le circostanze in cui il documento di risposta può essere memorizzato nella cache in modo sicuro. Può avere valoripublic, private o no-cache ecc. Pubblico significa che il documento è memorizzabile nella cache, Privato significa che il documento è per un singolo utente e può essere memorizzato solo in cache private (non condivise) e no-cache significa che il documento non deve mai essere memorizzato nella cache. |
3 | Connection Questa intestazione indica al browser se utilizzare o meno connessioni HTTP persistenti. Un valore diclose indica al browser di non utilizzare connessioni HTTP persistenti e keep-alive significa usare connessioni persistenti. |
4 | Content-Disposition Questa intestazione consente di richiedere che il browser chieda all'utente di salvare la risposta su disco in un file con il nome specificato. |
5 | Content-Encoding Questa intestazione specifica il modo in cui la pagina è stata codificata durante la trasmissione. |
6 | Content-Language Questa intestazione indica la lingua in cui è scritto il documento. Per esempio,en, en-us, ru, eccetera. |
7 | Content-Length Questa intestazione indica il numero di byte nella risposta. Queste informazioni sono necessarie solo se il browser utilizza una connessione HTTP persistente (keep-alive). |
8 | Content-Type Questa intestazione dà il MIME (Multipurpose Internet Mail Extension) tipo del documento di risposta. |
9 | Expires Questa intestazione specifica l'ora in cui il contenuto deve essere considerato non aggiornato e quindi non deve più essere memorizzato nella cache. |
10 | Last-Modified Questa intestazione indica quando il documento è stato modificato l'ultima volta. Il client può quindi memorizzare nella cache il documento e fornire una data tramite un fileIf-Modified-Since richiesta di intestazione nelle richieste successive. |
11 | Location Questa intestazione dovrebbe essere inclusa in tutte le risposte che hanno un codice di stato nei 300. Questo notifica al browser l'indirizzo del documento. Il browser si riconnette automaticamente a questa posizione e recupera il nuovo documento. |
12 | Refresh Questa intestazione specifica quanto presto il browser dovrebbe richiedere una pagina aggiornata. È possibile specificare il tempo in numero di secondi dopo il quale una pagina verrà aggiornata. |
13 | Retry-After Questa intestazione può essere utilizzata insieme a un file 503 (Service Unavailable) risposta per dire al cliente quanto tempo può ripetere la sua richiesta. |
14 | Set-Cookie Questa intestazione specifica un cookie associato alla pagina. |
Oggetto HttpServletResponse
L'oggetto risposta è un'istanza di un file javax.servlet.http.HttpServletResponse object. Proprio come il server crea l'oggetto richiesta, crea anche un oggetto per rappresentare la risposta al client.
L'oggetto risposta definisce anche le interfacce che si occupano della creazione di nuove intestazioni HTTP. Attraverso questo oggetto, il programmatore JSP può aggiungere nuovi cookie o timbri di data, codici di stato HTTP ecc.
I seguenti metodi possono essere utilizzati per impostare l'intestazione della risposta HTTP nel programma servlet. Questi metodi sono disponibili con l' oggetto HttpServletResponse . Questo oggetto rappresenta la risposta del server.
S.No. | Metodo e descrizione |
---|---|
1 | String encodeRedirectURL(String url) Codifica l'URL specificato per l'utilizzo in sendRedirect o, se la codifica non è necessaria, restituisce l'URL invariato. |
2 | String encodeURL(String url) Codifica l'URL specificato includendovi l'ID di sessione o, se la codifica non è necessaria, restituisce l'URL invariato. |
3 | boolean containsHeader(String name) Restituisce un valore booleano che indica se l'intestazione della risposta denominata è già stata impostata. |
4 | boolean isCommitted() Restituisce un valore booleano che indica se la risposta è stata confermata. |
5 | void addCookie(Cookie cookie) Aggiunge il cookie specificato alla risposta. |
6 | void addDateHeader(String name, long date) Aggiunge un'intestazione di risposta con il nome e il valore della data forniti. |
7 | void addHeader(String name, String value) Aggiunge un'intestazione di risposta con il nome e il valore forniti. |
8 | void addIntHeader(String name, int value) Aggiunge un'intestazione di risposta con il nome specificato e il valore intero. |
9 | void flushBuffer() Forza la scrittura sul client di qualsiasi contenuto nel buffer. |
10 | void reset() Cancella tutti i dati presenti nel buffer, nonché il codice di stato e le intestazioni. |
11 | void resetBuffer() Cancella il contenuto del buffer sottostante nella risposta senza cancellare le intestazioni o il codice di stato. |
12 | void sendError(int sc) Invia una risposta di errore al client utilizzando il codice di stato specificato e cancellando il buffer. |
13 | void sendError(int sc, String msg) Invia una risposta di errore al client utilizzando lo stato specificato. |
14 | void sendRedirect(String location) Invia una risposta di reindirizzamento temporaneo al client utilizzando l'URL del percorso di reindirizzamento specificato. |
15 | void setBufferSize(int size) Imposta la dimensione del buffer preferita per il corpo della risposta. |
16 | void setCharacterEncoding(String charset) Imposta la codifica dei caratteri (set di caratteri MIME) della risposta inviata al client, ad esempio, su UTF-8. |
17 | void setContentLength(int len) Imposta la lunghezza del corpo del contenuto nella risposta nei servlet HTTP; questo metodo imposta anche l'intestazione HTTP Content-Length. |
18 | void setContentType(String type) Imposta il tipo di contenuto della risposta inviata al client, se la risposta non è stata ancora confermata. |
19 | void setDateHeader(String name, long date) Imposta un'intestazione di risposta con il nome e il valore della data specificati. |
20 | void setHeader(String name, String value) Imposta un'intestazione di risposta con il nome e il valore forniti. |
21 | void setIntHeader(String name, int value) Imposta un'intestazione di risposta con il nome specificato e il valore intero. |
22 | void setLocale(Locale loc) Imposta la locale della risposta, se la risposta non è stata ancora confermata. |
23 | void setStatus(int sc) Imposta il codice di stato per questa risposta. |
Esempio di risposta dell'intestazione HTTP
L'esempio seguente userebbe setIntHeader() metodo da impostare Refresh intestazione per simulare un orologio digitale -
<%@ page import = "java.io.*,java.util.*" %>
<html>
<head>
<title>Auto Refresh Header Example</title>
</head>
<body>
<center>
<h2>Auto Refresh Header Example</h2>
<%
// Set refresh, autoload time as 5 seconds
response.setIntHeader("Refresh", 5);
// Get current time
Calendar calendar = new GregorianCalendar();
String am_pm;
int hour = calendar.get(Calendar.HOUR);
int minute = calendar.get(Calendar.MINUTE);
int second = calendar.get(Calendar.SECOND);
if(calendar.get(Calendar.AM_PM) == 0)
am_pm = "AM";
else
am_pm = "PM";
String CT = hour+":"+ minute +":"+ second +" "+ am_pm;
out.println("Current Time is: " + CT + "\n");
%>
</center>
</body>
</html>
Ora inserisci il codice sopra main.jspe prova ad accedervi. Questo visualizzerà l'ora corrente del sistema ogni 5 secondi come segue. Esegui JSP. Riceverai il seguente output: -
Auto Refresh Header Example
Current Time is: 9:44:50 PM
Puoi provare a lavorare sugli altri metodi in modo simile.