English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

JSP 客户端请求

Quando il browser richiede una pagina web, invia una serie di informazioni che non possono essere lette direttamente al server di rete, poiché queste informazioni sono trasmesse come parte dell'intestazione HTTP. Puoi consultare il protocollo HTTP per ottenere ulteriori informazioni.

La tabella seguente elenca alcuni contenuti importanti delle intestazioni delle informazioni del browser, che saranno viste spesso nel programming di rete in futuro:

InformazioniDescrizione
Accetta Specificare il tipo MIME che il browser o altri client possono gestire. Il suo valore è solitamente image/png o image/jpeg
Accept-Charset Specifica il set di caratteri utilizzato dal browser. Ad esempio ISO-8859-1
Accept-Encoding Specifica il tipo di codifica. Il suo valore di solito è gzip ocompress
Accept-Language Specifica la lingua preferita del client, il servlet restituirà preferibilmente un set di risultati in questa lingua, se il servlet la supporta. Ad esempio en, en-us, ru, ecc.
Authorization Riconosce diversi utenti quando si accede a pagine protette da password
Connection Indica se il client può gestire una connessione HTTP persistente. La connessione persistente permette al client o al browser di ottenere più file in una singola richiesta.Keep-Alive Indica che la connessione è persistente
Content-Length Applica solo alle richieste POST, rappresenta il numero di byte dei dati POST
Cookie Restituisce ai server i cookie precedentemente inviati al browser
Host Indica il nome dell'host e il numero di porta nell'URL originale
If-Modified-Since Indica che il client ha bisogno della pagina solo se la pagina è stata modificata dopo la data specificata. Il server invia un codice 304 al client per indicare che non ci sono risorse aggiornate
If-Unmodified-Since Contrariamente a If-Modified-Since, l'operazione avrà successo solo se il documento non è stato modificato dopo la data specificata
Referer Segna l'URL della pagina referenziata. Ad esempio, se sei sulla pagina 1 e clicchi su un link alla pagina 2, l'URL della pagina 1 verrà incluso nelle informazioni di intestazione della richiesta del browser per la pagina 2
User-Agent Usato per distinguere le richieste inviate da diversi browser o client e restituire contenuti diversi per diversi tipi di browser

Classe HttpServletRequest

L'oggetto request è un esempio della classe javax.servlet.http.HttpServletRequest. Ogni volta che il client richiede una pagina, il motore JSP crea un nuovo oggetto per rappresentare questa richiesta.

L'oggetto request fornisce una serie di metodi per ottenere intestazioni di informazioni HTTP, inclusi dati dei moduli, cookie, metodi HTTP, ecc.

Di seguito verranno presentati alcuni metodi comunemente utilizzati in JSP per ottenere informazioni di intestazione HTTP. Dettagli ulteriori sono disponibili nella tabella sottostante:

Numero di sequenzaMetodo& Descrizione
1Cookie[] getCookies() Restituisce un array di tutti i cookie del client
2Enumeration getAttributeNames() Restituisce l'insieme di tutti i nomi degli attributi dell'oggetto request
3Enumeration getHeaderNames() Restituisce l'insieme di tutti i nomi delle intestazioni HTTP
4Enumeration getParameterNames() Restituisce l'insieme di tutti i parametri della richiesta
5HttpSession getSession() Restituisce l'oggetto sessione corrispondente al request, se non esiste, crea una nuova sessione
6HttpSession getSession(boolean create) Restituisce l'oggetto sessione corrispondente al request, se non esiste e il parametro create è true, restituisce una nuova sessione
7Locale getLocale() Restituisce l'oggetto Locale della pagina corrente, che può essere impostato nella response
8Object getAttribute(String name) Restituisce il valore dell'attributo con nome name, se non esiste restituisce null
9ServletInputStream getInputStream() Restituisce lo stream di input della richiesta
10String getAuthType() Restituisce il nome dello schema di autenticazione utilizzato per proteggere il servlet, ad esempio "BASIC" o "SSL" o null se il JSP non ha impostato misure di protezione
11String getCharacterEncoding() Restituisce il nome dell'insieme di caratteri di codifica del request
12String getContentType() Restituisce il tipo MIME del corpo del request, se sconosciuto restituisce null
13String getContextPath() Restituisce il percorso contestuale indicato nel URI del request
14String getHeader(String name) Restituisce l'intestazione informativa specificata da name
15String getMethod() Restituisce il metodo HTTP di questo request, ad esempio GET, POST o PUT
16String getParameter(String name) Restituisce il parametro specificato da name in questo request, se non esiste restituisce null
17String getPathInfo() Restituisce qualsiasi percorso aggiuntivo associato all'URL di questo request
18String getProtocol() Restituisce il nome e la versione del protocollo utilizzato da questo request
19String getQueryString() Restituisce la stringa di ricerca inclusa nell'URL di questa richiesta
20String getRemoteAddr() Restituisce l'indirizzo IP del client
21String getRemoteHost() Restituisce il nome completo del client
22String getRemoteUser() Restituisce l'utente autenticato del client, se l'utente non è autenticato restituisce null
23String getRequestURI() Restituisce l'URI della richiesta
24String getRequestedSessionId() Restituisce l'ID di sessione specificato dalla richiesta
25String getServletPath() Restituisce il percorso del servlet richiesto
26String[] getParameterValues(String name) Restituisce tutti i valori dei parametri specificati dal nome, se non esiste restituisce null
27boolean isSecure() Restituisce se la richiesta ha utilizzato un canale crittografato, come HTTPS
28int getContentLength() Restituisce il numero di byte contenuti nel corpo della richiesta, se sconosciuto restituisce -1
29int getIntHeader(String name) Restituisce il valore dell'intestazione di richiesta specificata
30int getServerPort() Restituisce il numero di porta del server

Esempio di intestazione informativa HTTP

In questo esempio, utilizzeremo il metodo getHeaderNames() della classe HttpServletRequest per leggere le informazioni di intestazione HTTP. Questo metodo restituisce le informazioni di intestazione della richiesta HTTP attuale in forma di enum.

Dopo aver ottenuto l'oggetto Enumeration, utilizzare un metodo standard per esplorare l'oggetto Enumeration, utilizzare il metodo hasMoreElements() per determinare quando fermarsi e il metodo nextElement() per ottenere il nome di ogni parametro.

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%
<%@ page import="java.io.*,java.util.*" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>基础教程网(oldtoolbag.com)</title>
</head>
<body>
<h2>HTTP 头部请求示例</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>
</body>
</html>

访问 main.jsp,将会得到以下结果:

您可以在上面的代码中尝试 HttpServletRequest 类的其他方法。