JSP - Richiesta client
In questo capitolo, discuteremo la richiesta del client in JSP. Quando un browser richiede una pagina Web, invia molte informazioni al server Web. Queste informazioni non possono essere lette direttamente perché queste informazioni viaggiano come parte dell'intestazione della richiesta HTTP. Puoi controllare il protocollo HTTP per ulteriori informazioni su questo.
La tabella seguente elenca le importanti informazioni di intestazione che provengono dal browser. Queste informazioni sono spesso utilizzate nella programmazione web -
S.No. | Intestazione e descrizione |
---|---|
1 | Accept Questa intestazione specifica il file MIMEtipi che il browser o altri client possono gestire. Valori diimage/png o image/jpeg sono le due possibilità più comuni. |
2 | Accept-Charset Questa intestazione specifica i set di caratteri che il browser può utilizzare per visualizzare le informazioni. Per esempio,ISO-8859-1. |
3 | Accept-Encoding Questa intestazione specifica i tipi di codifiche che il browser sa come gestire. Valori digzip o compress sono le due possibilità più comuni. |
4 | Accept-Language Questa intestazione specifica le lingue preferite del client nel caso in cui il servlet possa produrre risultati in più di una lingua. Per esempioen, en-us, ru, eccetera. |
5 | Authorization Questa intestazione viene utilizzata dai client per identificarsi quando accedono a pagine Web protette da password. |
6 | Connection Questa intestazione indica se il client può gestire connessioni HTTP persistenti. Le connessioni persistenti consentono al client o ad un altro browser di recuperare più file con una singola richiesta. Un valore diKeep-Alive significa che devono essere utilizzate connessioni persistenti. |
7 | Content-Length Questa intestazione è applicabile solo a POST richiede e fornisce la dimensione dei dati POST in byte. |
8 | Cookie Questa intestazione restituisce i cookie ai server che li hanno precedentemente inviati al browser. |
9 | Host Questa intestazione specifica l'host e la porta come indicato nell'URL originale. |
10 | If-Modified-Since Questa intestazione indica che il client desidera la pagina solo se è stata modificata dopo la data specificata. Il server invia un codice, 304 che significaNot Modified intestazione se non sono disponibili risultati più recenti. |
11 | If-Unmodified-Since Questa intestazione è l'opposto di If-Modified-Since; specifica che l'operazione dovrebbe riuscire solo se il documento è più vecchio della data specificata. |
12 | Referer Questa intestazione indica l'URL delle pagine web di riferimento. Ad esempio, se ci si trova nella pagina Web 1 e si fa clic su un collegamento alla pagina Web 2, l'URL della pagina Web 1 viene incluso nell'intestazione del referer quando il browser richiede la pagina Web 2. |
13 | User-Agent Questa intestazione identifica il browser o un altro client che effettua la richiesta e può essere utilizzata per restituire contenuti diversi a diversi tipi di browser. |
Oggetto HttpServletRequest
L'oggetto richiesta è un'istanza di un file javax.servlet.http.HttpServletRequestoggetto. Ogni volta che un client richiede una pagina, il motore JSP crea un nuovo oggetto per rappresentare quella richiesta.
L'oggetto richiesta fornisce metodi per ottenere informazioni sull'intestazione HTTP, inclusi form data, cookies, HTTP methods, eccetera.
La tabella seguente elenca i metodi importanti che possono essere utilizzati per leggere l'intestazione HTTP nel programma JSP. Questi metodi sono disponibili con l' oggetto HttpServletRequest che rappresenta la richiesta del client al server web.
S.No. | Metodo e descrizione |
---|---|
1 | Cookie[] getCookies() Restituisce un array contenente tutti gli oggetti Cookie che il client ha inviato con questa richiesta. |
2 | Enumeration getAttributeNames() Restituisce un'enumerazione contenente i nomi degli attributi disponibili per questa richiesta. |
3 | Enumeration getHeaderNames() Restituisce un'enumerazione di tutti i nomi di intestazione contenuti in questa richiesta. |
4 | Enumeration getParameterNames() Restituisce un'enumerazione di oggetti String contenenti i nomi dei parametri contenuti in questa richiesta. |
5 | HttpSession getSession() Restituisce la sessione corrente associata a questa richiesta o, se la richiesta non ha una sessione, ne crea una. |
6 | HttpSession getSession(boolean create) Restituisce la HttpSession corrente associata a questa richiesta o, se non esiste una sessione corrente e create è true, restituisce una nuova sessione. |
7 | Locale getLocale() Restituisce le impostazioni internazionali preferite in cui il client accetterà il contenuto, in base all'intestazione Accept-Language. |
8 | Object getAttribute(String name) Restituisce il valore dell'attributo denominato come oggetto o null se non esiste alcun attributo del nome specificato. |
9 | ServletInputStream getInputStream() Recupera il corpo della richiesta come dati binari utilizzando un ServletInputStream. |
10 | String getAuthType() Restituisce il nome dello schema di autenticazione utilizzato per proteggere il servlet, ad esempio "BASIC" o "SSL" o null se JSP non era protetto. |
11 | String getCharacterEncoding() Restituisce il nome della codifica dei caratteri utilizzata nel corpo di questa richiesta. |
12 | String getContentType() Restituisce il tipo MIME del corpo della richiesta o null se il tipo non è noto. |
13 | String getContextPath() Restituisce la parte dell'URI della richiesta che indica il contesto della richiesta. |
14 | String getHeader(String name) Restituisce il valore dell'intestazione della richiesta specificata come String. |
15 | String getMethod() Restituisce il nome del metodo HTTP con cui è stata effettuata questa richiesta, ad esempio, GET, POST o PUT. |
16 | String getParameter(String name) Restituisce il valore di un parametro di richiesta come String o null se il parametro non esiste. |
17 | String getPathInfo() Restituisce qualsiasi informazione aggiuntiva sul percorso associata all'URL inviato dal client quando ha effettuato questa richiesta. |
18 | String getProtocol() Restituisce il nome e la versione del protocollo utilizzato dalla richiesta. |
19 | String getQueryString() Restituisce la stringa di query contenuta nell'URL della richiesta dopo il percorso. |
20 | String getRemoteAddr() Restituisce l'indirizzo IP (Internet Protocol) del client che ha inviato la richiesta. |
21 | String getRemoteHost() Restituisce il nome completo del client che ha inviato la richiesta. |
22 | String getRemoteUser() Restituisce il login dell'utente che effettua questa richiesta, se l'utente è stato autenticato, o null se l'utente non è stato autenticato. |
23 | String getRequestURI() Restituisce la parte dell'URL di questa richiesta dal nome del protocollo fino alla stringa di query nella prima riga della richiesta HTTP. |
24 | String getRequestedSessionId() Restituisce l'ID di sessione specificato dal client. |
25 | String getServletPath() Restituisce la parte dell'URL di questa richiesta che chiama il JSP. |
26 | String[] getParameterValues(String name) Restituisce una matrice di oggetti String contenenti tutti i valori del parametro di richiesta specificato o null se il parametro non esiste. |
27 | boolean isSecure() Restituisce un valore booleano che indica se questa richiesta è stata effettuata utilizzando un canale protetto, come HTTPS. |
28 | int getContentLength() Restituisce la lunghezza, in byte, del corpo della richiesta e resa disponibile dal flusso di input, oppure -1 se la lunghezza non è nota. |
29 | int getIntHeader(String name) Restituisce il valore dell'intestazione della richiesta specificata come int. |
30 | int getServerPort() Restituisce il numero di porta su cui è stata ricevuta questa richiesta. |
Esempio di richiesta di intestazione HTTP
Di seguito è riportato l'esempio che utilizza getHeaderNames() metodo di HttpServletRequestper leggere le informazioni dell'intestazione HTTP. Questo metodo restituisce un'enumerazione che contiene le informazioni di intestazione associate alla richiesta HTTP corrente.
Una volta che abbiamo un'enumerazione, possiamo ripetere l'enumerazione nel modo standard. Useremo il filehasMoreElements() metodo per determinare quando fermarsi e il nextElement() metodo per ottenere il nome di ogni nome di parametro.
<%@ page import = "java.io.*,java.util.*" %>
<html>
<head>
<title>HTTP Header Request Example</title>
</head>
<body>
<center>
<h2>HTTP Header Request Example</h2>
<table width = "100%" border = "1" align = "center">
<tr bgcolor = "#949494">
<th>Header Name</th>
<th>Header Value(s)</th>
</tr>
<%
Enumeration headerNames = request.getHeaderNames();
while(headerNames.hasMoreElements()) {
String paramName = (String)headerNames.nextElement();
out.print("<tr><td>" + paramName + "</td>\n");
String paramValue = request.getHeader(paramName);
out.println("<td> " + paramValue + "</td></tr>\n");
}
%>
</table>
</center>
</body>
</html>
Mettiamo ora il codice sopra in main.jsp e prova ad accedervi.
Esempio di richiesta di intestazione HTTP
Nome intestazione | Valore / i intestazione |
---|---|
accettare | * / * |
accetta-lingua | en-us |
user-agent | Mozilla / 4.0 (compatibile; MSIE 7.0; Windows NT 5.1; Trident / 4.0; InfoPath.2; MS-RTC LM 8) |
accetta-codifica | gzip, sgonfiare |
ospite | localhost: 8080 |
connessione | Keep-Alive |
controllo della cache | no-cache |
Puoi provare a lavorare su tutti i metodi in modo simile.