Richiesta del client JSP
Azioni JSP che utilizzano costrutti nella sintassi XML per controllare il comportamento del motore servlet. Impareremo piรน in dettaglio i vari elementi dell'azione JSP come la richiesta del client, la risposta del server, i codici di stato HTTP.
Richiesta del client JSP
- Quando la pagina web viene richiesta, invia informazioni al server web nell'intestazione HTTP.
- Possiamo utilizzare queste informazioni utilizzando l'oggetto HTTPServletRequest.
- Le informazioni inviate dal browser vengono archiviate nell'intestazione della richiesta HTTP.
- Stiamo utilizzando intestazioni diverse per inviare informazioni all'oggetto della richiesta.
Intestazioni in JSP
Le diverse intestazioni in JSP sono descritte di seguito:
| testata | Descrizione | Esempio |
|---|---|---|
| Accetta | Specifica i tipi MIME che il browser o altri client possono gestire | Immagine/png o immagine/jpeg |
| Accetta set di caratteri | Utilizza il set di caratteri utilizzato dal browser per visualizzare le informazioni | ISO-8859-1 |
| Accetta: codifica | Specifica il tipo di codifica gestita dal browser | Gzip o comprimi |
| Accetta lingua | Specifica la lingua specificata dal client | En,en_noi |
| Autorizzazione | Intestazione utilizzata dai client quando tentano di accedere a pagine Web protette da password | |
| Connessione | Indica se il client puรฒ gestire connessioni HTTP persistenti (il browser puรฒ recuperare piรน file) | Mantieni vivo |
| Lunghezza del contenuto | Applicabile per pubblicare richieste. Fornisce la dimensione dei dati postali in byte | |
| Cookies | Restituisce i cookie al server (quelli precedentemente inviati al browser) | |
| ospite | Specifica l'host e la porta dell'URL originale | |
| Se modificato da allora | Indica che richiede solo una pagina se รจ stata cambiata o modificata | |
| Se non modificato da allora | Indica che richiede una pagina solo se non รจ stata cambiata o modificata | |
| Referente | Indica l'URL della pagina URL di riferimento | |
| Agente utente | Identifica il browser o il client che effettua la richiesta |
Metodi di intestazione HTTP in JSP
Per leggere l'intestazione HTTP nella pagina JSP vengono utilizzati i seguenti metodi:
- Cookie[] getCookies() โ restituisce un array contenente oggetti cookie che il client ha inviato
- Enumerazione getAttributeNames() โ contiene l'enumerazione dei nomi degli attributi per la richiesta
- Enumerazione getHeaderNames() โ contiene l'enumerazione dei nomi dell'intestazione.
- Enumerazione getParameterNames() โ contiene l'enumerazione dei nomi dei parametri da ottenere nella richiesta.
- HttpSessiongetSession() โ restituisce la sessione corrente associata alla richiesta o se non ha una sessione ne creerร una nuova.
- Locale getLocale() โ restituisce le impostazioni locali preferite in cui il client accetterร il contenuto. ร stato assegnato alla risposta. Per impostazione predefinita, il valore sarร l'impostazione locale predefinita del server.
- Oggetto getAttribute(nome stringa) โ restituisce il valore dell'attributo denominato come oggetto.
- ServletInputStreamgetInputStream() โ recupera il corpo della richiesta come dati binari.
- Stringa getAuthType() โ restituisce il nome dello schema di autenticazione per proteggere il servlet
- Stringa getCharacterEncoding() โ restituisce il nome della codifica dei caratteri utilizzata nel corpo della richiesta.
- Stringa getContentType() โ restituisce il tipo MIME del corpo della richiesta.
- String getContextPath() โ restituisce la parte dell'URI della richiesta indica il percorso di contesto dell'URI
- String getHeader(nome stringa) โ restituisce l'intestazione della richiesta come una stringa
- String getMethod() โ restituisce il nome del metodo HTTP come GET, POST
- String getParameter(nome stringa) โ restituisce il parametro della richiesta come una stringa.
- Stringa getPathInfo() โ restituisce le informazioni sul percorso associate all'URL
- String getQueryString() โ restituisce la stringa di query associata all'URL della richiesta
- Stringa getServletPath() โ restituisce la parte degli URL della richiesta che chiama la JSP
- String[] getParameterValues(nome stringa) โ restituisce l'array di oggetti stringa contenenti i valori del parametro request
Esempio:
Nell'esempio seguente, stiamo utilizzando metodi diversi utilizzando l'oggetto richiesta
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
<%@ page import="java.io.* java.util.*" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Client Request Guru JSP</title>
</head>
<body>
<h2>Client Request Guru JSP</h2>
<table border="1">
<tr>
<th>guru header</th><th>guru header Value(s)</th>
</tr>
<%
HttpSession gurusession = request.getSession();
out.print("<tr><td>Session Name is </td><td>" +gurusession+ "</td.></tr>");
Locale gurulocale = request.getLocale ();
out.print("<tr><td>Locale Name is</td><td>" +gurulocale + "</td></tr>");
String path = request.getPathInfo();
out.print("<tr><td>Path Name is</td><td>" +path+ "</td></tr>");
String lpath = request.get();
out.print("<tr><td>Context path is</td><td>" +lipath + "</td></tr>");
String servername = request.getServerName();
out.print("<tr><td>Server Name is </td><td>" +servername+ "</td></tr>");
int portname = request.getServerPort();
out.print("<tr><td>Server Port is </td><td>" +portname+ "</td></tr>");
Enumeration hnames = request.getHeaderNames();
while(hnames.hasMoreElements()) {
String paramName = (String)hnames.nextElement();
out.print ("<tr><td>" + paramName + "</td>" );
String paramValue = request.getHeader(paramName);
out.println("<td> " + paramValue + "</td></tr>");
}
%>
Spiegazione del codice:
Riga di codice 17: Utilizzando l'oggetto richiesta, otteniamo l'oggetto sessione di quella particolare sessione e otteniamo il valore dell'oggetto di quella sessione
Riga di codice 19: Utilizzando l'oggetto richiesta, otteniamo la locale di quella particolare sessione i.een_US locale per quel JSP.
Riga di codice 21: Utilizzando l'oggetto richiesta, otteniamo informazioni sul percorso per quel JSP. In questo caso, รจ nullo poichรฉ non รจ menzionato alcun percorso per l'URL.
Riga di codice 23: Utilizzando l'oggetto richiesta, otteniamo il percorso del contesto, ovvero il percorso root
Riga di codice 25: Utilizzando l'oggetto richiesta, otteniamo il nome del server.
Riga di codice 27: Utilizzando l'oggetto richiesta, otteniamo la porta del server.
Riga di codice 29-35: Utilizzando l'oggetto richiesta, otteniamo nomi di intestazione che risultano come enumerazione e quindi otteniamo tutti i valori di intestazione nei nomi di intestazione.
In questo, otteniamo tutti i valori dell'intestazione come a Cookies , host, connessione, accetta lingua, accetta codifica.
Quando esegui il codice sopra, ottieni il seguente output:
Uscita:
Stiamo ottenendo la serie di valori come nome sessione, nome locale, nome percorso, nome server, nome porta, host, percorso contesto e tutti i valori di intestazione di quello JSP.
Risposta del server JSP
- Quando una richiesta viene elaborata e quindi la risposta viene generata dal server web. ร costituito da una riga di stato, intestazioni di risposta, una riga vuota e un documento.
- ร l'oggetto di HTTPServletResponseclass, che รจ un oggetto di risposta.
- La riga di stato รจ una versione di HTML.
Intestazioni di risposta in JSP
Le intestazioni di risposta in JSP sono menzionate di seguito:
| testata | Descrizione |
|---|---|
| Consentire | Specifica i metodi di richiesta come GET, POST richiesti dal server |
| Controllo della cache | Il documento di risposta puรฒ essere memorizzato nella cache. Puรฒ essere pubblico, privato e senza cache. Nessuna cache specifica che il documento non deve essere memorizzato nella cache |
| Connessione | Indica se il browser deve utilizzare o meno le connessioni HTTP salvate. Il valore Close indica che il browser non deve utilizzare connessioni persistenti in HTTP e "keep-alive" significa utilizzare connessioni persistenti |
| Disposizione dei contenuti | Per chiedere all'utente se salvare o meno la risposta su disco |
| Codifica del contenuto | La pagina deve essere codificata durante la trasmissione |
| Lunghezza del contenuto | Numero di byte nella risposta |
| Tipo di contenuto | Specifica il tipo MIME di risposta |
| Scade | Specifica fino a quando il contenuto dovrร essere considerato obsoleto e non dovrร essere memorizzato nella cache |
| Ultima modifica | Indica quando il documento รจ stato modificato l'ultima volta |
| Localitร | Dovrebbe essere incluso in tutte le risposte che hanno il codice di stato 300 come codice di stato |
| ricaricare | Specifica come trovare la pagina aggiornata. |
| Riprova dopo | Puรฒ essere utilizzato con la risposta 503 per indicare al client quanto presto potrร ripetere la richiesta |
| Set-biscotto | Specifica il cookie associato alla pagina |
Metodi di intestazione della risposta HTTP in JSP
Di seguito sono riportati i metodi in JSP che utilizzano l'oggetto risposta:
- Stringa codificaRedirectURL(Stringa URL) โ codifica l'URL nel metodo reindirizzamentoURL.
- Stringa codificaURL(Stringa URL) โ codifica l'URL includendo l'ID di sessione.
- Booleano contieneHeader(nome stringa) โ contiene o meno un'intestazione nel JSP.
- Booleano isCommited() โ la risposta รจ stata impegnata o meno.
- Void addCookie(Cookie cookie) โ aggiunge un cookie alla risposta
- Void addDateHeader(nome stringa, valore stringa) โ aggiunge il nome e il valore della data dell'intestazione della risposta
- Void addHeader(nome stringa, valore stringa) โ aggiunge l'intestazione della risposta con nome e valore
- Void addIntHeader(nome stringa, valore int) โ aggiunge un'intestazione di risposta con nome e valore intero
- VuotoBuffer() - forza il contenuto del buffer nell'output verso il client.
- Ripristino vuoto() โ cancella i dati nel buffer.
- Reset del vuotoBuffer - cancella il buffer del contenuto nella risposta senza cancellare i codici di stato.
- Void sendError(intsc,Stringmsg) โ invia una risposta di errore al client utilizzando il codice di stato.
- Void sendRedirect(Posizione stringa) โ invia una risposta di reindirizzamento temporanea al client.
- Insieme vuotoBufferDimensione (dimensione intera) โ imposta la dimensione del buffer del corpo
- Void setCharacterEncoding(stringa set di caratteri) โ imposta la codifica dei caratteri
- Void setContentType(tipo stringa) โ imposta il tipo di contenuto della risposta
- Void setContentLength(intlen) โ imposta la lunghezza del contenuto della risposta
- Void setLocale(Locale lcl) โ imposta il tipo locale della risposta
- Void setStatus(intsc) โ imposta il codice di stato della risposta
Esempio:
In questo esempio, esamineremo i diversi metodi getLocale, flushbuffer, getWriter, get ContentType, setIntHeader.
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
<%@ page import="java.io.* java.util.*" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Guru Action Response</title>
</head>
<body>
<center>
<h2>Guru Response</h2>
<%
Locale lcl = response.getLocale();
out.println("Locale is : " + lcl + "\n");
response.flushBuffer();
PrintWriter output = response.getWriter();
output.println("This is from writer object");
String type = response.getContentType();
out.println("The content type : " + type + "\n");
// Set refresh,autoload time as 5 seconds
response.setIntHeader("Refresh", 5);
//Get current time
Date dt = new Date();
out.println("Today's date is : " +dt.toString() + "\n");
%>
</center>
</body>
</html>
Spiegazione del codice:
Riga di codice 13: Utilizzando l'oggetto risposta, otteniamo l'oggetto locale di questa sessione JSP
Riga di codice 15: Utilizzando l'oggetto di risposta, flushbuffer viene utilizzato per forzare il contenuto del buffer nel client
Riga di codice 16: Utilizzando l'oggetto risposta, otteniamo l'oggetto scrittore che ottiene l'output nel flusso di output
Riga codice18: Utilizzando l'oggetto risposta, otteniamo il tipo di contenuto, ovvero il tipo MIME dell'oggetto risposta
Riga di codice 21: Utilizzando l'oggetto di risposta, viene utilizzato per il caricamento automatico ogni 5 secondi poichรฉ 5 รจ impostato come secondo parametro
Quando esegui il codice sopra, ottieni il seguente output:
Produzione:
- Qui otteniamo l'output poichรฉ proviene dall'oggetto writer di getWriter, che ci fornisce l'oggetto e possiamo emettere l'output nel flusso di output.
- Otteniamo la locale come en_us e il tipo di contenuto come text/html
- Otteniamo il set di caratteri come ISO 8859
- La data odierna come data corrente.
Codici di stato HTTP JSP
- Quando la richiesta viene elaborata, viene generata la risposta. La riga di stato della risposta รจ composta dalla versione HTTP, da un codice di stato e da un messaggio associato.
- Il messaggio รจ direttamente associato al codice di stato e alla versione HTTP ed รจ determinato dal server.
- Per impostazione predefinita, 200 รจ impostato come codice di stato in JSP, quindi non รจ necessario impostarlo esplicitamente.
- Possiamo impostare come metodo Response.setStatus()
I codici rientrano nelle seguenti 5 categorie:
- 100-199 โ Qui il cliente indica che dovrebbe rispondere con qualche azione
- 200-299 โ Significa che la richiesta ha avuto successo
- 300-399 โ Vengono utilizzati per i file che sono stati spostati e solitamente includono un'intestazione di posizione che indica il nuovo indirizzo
- 400-499 โ Indica un errore da parte del client
- 500-599 โ Indica un errore da parte del server
Di seguito sono riportati alcuni dei codici di stato comuni:
- 200 โ Indica che va tutto bene
- 301 โ Si รจ spostato definitivamente
- 304 โ Non modificato dall'ultima modifica
- 400 โ Richiesta errata
- 404 non trovato
- 405 โ Metodo non trovato
- 500 - Errore interno del server
- 503 servizio non disponibile
- 505 โ Versione HTTP non supportata
Metodi del codice di stato HTTP in JSP
Alcuni dei metodi dei codici di stato in JSP sono elencati di seguito:
- Pubblico void setStatus(intstatusCode): Imposta il codice di stato che vogliamo impostare in quella pagina JSP. Questo ci darร il messaggio del codice di stato che รจ stato impostato
- SendRedirect pubblico void(URL stringa): Genera una risposta 302 insieme all'intestazione della posizione che fornisce l'URL del nuovo documento
- Public void sendError(intcode,Stringmsg): Invia il codice di stato insieme al messaggio breve ed รจ formattato all'interno del documento HTML.
Esempio:
In questo esempio, stiamo inviando esplicitamente l'errore alla pagina JSP.
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Guru Status Code</title> </head> <body> <% response.sendError(404,"Guru Page Not Found"); %> </body> </html>
Spiegazione del codice:
Riga di codice 10: Utilizzando l'oggetto risposta stiamo inviando l'errore a una pagina con due parametri.
- Codice di stato: puรฒ essere uno qualsiasi dei precedenti. In questo caso, lo abbiamo descritto come 404
- Messaggio: puรฒ essere qualsiasi messaggio specifico che vogliamo mostrare l'errore
Se esegui il codice sopra, otterrai il seguente output:
Produzione:
Qui otteniamo il codice di errore 404, che รจ stato inviato dal codice e visualizza anche il messaggio "Pagina Guru non trovata" visualizzato nell'output.
Sintesi
- In questo articolo abbiamo appreso la richiesta del client e la risposta del server, come viene intercettata la richiesta e come vengono manipolate le risposte.
- Azioni JSP che utilizzano costrutti nella sintassi XML per controllare il comportamento del motore servlet.
- Quando la pagina web viene richiesta, invia informazioni al server web nell'intestazione HTTP.
- Quando una richiesta viene elaborata e quindi la risposta viene generata dal server web. ร costituito da una riga di stato, intestazioni di risposta, una riga vuota e un documento.
- Quando la richiesta viene elaborata, viene generata la risposta. La riga di stato della risposta รจ composta dalla versione HTTP, da un codice di stato e da un messaggio associato.



