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:

  1. Cookie[] getCookies() โ€“ restituisce un array contenente oggetti cookie che il client ha inviato
  2. Enumerazione getAttributeNames() โ€“ contiene l'enumerazione dei nomi degli attributi per la richiesta
  3. Enumerazione getHeaderNames() โ€“ contiene l'enumerazione dei nomi dell'intestazione.
  4. Enumerazione getParameterNames() โ€“ contiene l'enumerazione dei nomi dei parametri da ottenere nella richiesta.
  5. HttpSessiongetSession() โ€“ restituisce la sessione corrente associata alla richiesta o se non ha una sessione ne creerร  una nuova.
  6. 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.
  7. Oggetto getAttribute(nome stringa) โ€“ restituisce il valore dell'attributo denominato come oggetto.
  8. ServletInputStreamgetInputStream() โ€“ recupera il corpo della richiesta come dati binari.
  9. Stringa getAuthType() โ€“ restituisce il nome dello schema di autenticazione per proteggere il servlet
  10. Stringa getCharacterEncoding() โ€“ restituisce il nome della codifica dei caratteri utilizzata nel corpo della richiesta.
  11. Stringa getContentType() โ€“ restituisce il tipo MIME del corpo della richiesta.
  12. String getContextPath() โ€“ restituisce la parte dell'URI della richiesta indica il percorso di contesto dell'URI
  13. String getHeader(nome stringa) โ€“ restituisce l'intestazione della richiesta come una stringa
  14. String getMethod() โ€“ restituisce il nome del metodo HTTP come GET, POST
  15. String getParameter(nome stringa) โ€“ restituisce il parametro della richiesta come una stringa.
  16. Stringa getPathInfo() โ€“ restituisce le informazioni sul percorso associate all'URL
  17. String getQueryString() โ€“ restituisce la stringa di query associata all'URL della richiesta
  18. Stringa getServletPath() โ€“ restituisce la parte degli URL della richiesta che chiama la JSP
  19. 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:

Richiesta del client JSP

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:

  1. Stringa codificaRedirectURL(Stringa URL) โ€“ codifica l'URL nel metodo reindirizzamentoURL.
  2. Stringa codificaURL(Stringa URL) โ€“ codifica l'URL includendo l'ID di sessione.
  3. Booleano contieneHeader(nome stringa) โ€“ contiene o meno un'intestazione nel JSP.
  4. Booleano isCommited() โ€“ la risposta รจ stata impegnata o meno.
  5. Void addCookie(Cookie cookie) โ€“ aggiunge un cookie alla risposta
  6. Void addDateHeader(nome stringa, valore stringa) โ€“ aggiunge il nome e il valore della data dell'intestazione della risposta
  7. Void addHeader(nome stringa, valore stringa) โ€“ aggiunge l'intestazione della risposta con nome e valore
  8. Void addIntHeader(nome stringa, valore int) โ€“ aggiunge un'intestazione di risposta con nome e valore intero
  9. VuotoBuffer() - forza il contenuto del buffer nell'output verso il client.
  10. Ripristino vuoto() โ€“ cancella i dati nel buffer.
  11. Reset del vuotoBuffer - cancella il buffer del contenuto nella risposta senza cancellare i codici di stato.
  12. Void sendError(intsc,Stringmsg) โ€“ invia una risposta di errore al client utilizzando il codice di stato.
  13. Void sendRedirect(Posizione stringa) โ€“ invia una risposta di reindirizzamento temporanea al client.
  14. Insieme vuotoBufferDimensione (dimensione intera) โ€“ imposta la dimensione del buffer del corpo
  15. Void setCharacterEncoding(stringa set di caratteri) โ€“ imposta la codifica dei caratteri
  16. Void setContentType(tipo stringa) โ€“ imposta il tipo di contenuto della risposta
  17. Void setContentLength(intlen) โ€“ imposta la lunghezza del contenuto della risposta
  18. Void setLocale(Locale lcl) โ€“ imposta il tipo locale della risposta
  19. 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:

Risposta del server JSP

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:

  1. 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
  2. SendRedirect pubblico void(URL stringa): Genera una risposta 302 insieme all'intestazione della posizione che fornisce l'URL del nuovo documento
  3. 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.

  1. Codice di stato: puรฒ essere uno qualsiasi dei precedenti. In questo caso, lo abbiamo descritto come 404
  2. Messaggio: puรฒ essere qualsiasi messaggio specifico che vogliamo mostrare l'errore

Se esegui il codice sopra, otterrai il seguente output:

Codici di stato HTTP JSP

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.

Riassumi questo post con: