JSP Requête client
Lorsqu'un navigateur demande une page web, il envoie une série d'informations au serveur web qui ne peuvent pas être lues directement, car ces informations sont transmises dans le cadre des en-têtes HTTP. Vous pouvez consulter le protocole HTTP pour plus d'informations.
Le tableau suivant répertorie certains contenus importants des en-têtes côté navigateur, qui seront souvent rencontrés dans la programmation réseau à venir :
| Information | Description |
|---|---|
| Accept | Spécifie les types MIME que le navigateur ou d'autres clients peuvent gérer. Sa valeur est généralementimage/pngouimage/jpeg |
| Accept-Charset | Spécifie le jeu de caractères à utiliser par le navigateur. Par exemple ISO-8859-1 |
| Accept-Encoding | Spécifie le type d'encodage. Sa valeur est généralementgzipoucompress |
| Accept-Language | Spécifie la langue préférée du client. Le servlet donnera la priorité au renvoi d'ensembles de résultats composés dans la langue actuelle, si le servlet prend en charge cette langue. Par exemple en, en-us, ru, etc. |
| Authorization | Identifie les différents utilisateurs lors de l'accès à des pages web protégées par mot de passe |
| Connexion | Indique si le client peut gérer les connexions persistantes HTTP. Les connexions persistantes permettent au client ou au navigateur de récupérer plusieurs fichiers en une seule requête.Keep-AliveIndique que la connexion persistante est activée |
| Content-Length | S'applique uniquement aux requêtes POST, indique le nombre d'octets des données POST |
| Cookie | Renvoie au serveur les cookies précédemment envoyés au navigateur |
| Host | Indique le nom d'hôte et le numéro de port dans l'URL d'origine |
| If-Modified-Since | Indique que le client n'a besoin de cette page web que si elle a été modifiée après la date spécifiée. Le serveur envoie un code 304 au client, indiquant qu'il n'y a pas de ressources plus récentes. |
| If-Unmodified-Since | Le contraire de If-Modified-Since. L'opération ne réussit que si le document n'a pas été modifié après la date spécifiée. |
| Referer | Indique l'URL de la page de provenance. Par exemple, si vous êtes sur la page 1 et cliquez sur un lien vers la page 2, alors l'URL de la page 1 sera incluse dans les en-têtes de la requête du navigateur pour la page 2. |
| User-Agent | Utilisé pour distinguer les requêtes envoyées par différents navigateurs ou clients, et renvoyer un contenu différent aux différents types de navigateurs. |
Classe HttpServletRequest
L'objet request est une instance de la classe javax.servlet.http.HttpServletRequest. Chaque fois qu'un client demande une page, le moteur JSP crée un nouvel objet pour représenter cette requête.
L'objet request fournit une série de méthodes pour obtenir les en-têtes HTTP, notamment les données de formulaire, les cookies, les méthodes HTTP, etc.
Ensuite, certaines méthodes couramment utilisées en programmation JSP pour obtenir les en-têtes HTTP seront présentées. Voir le tableau suivant pour plus de détails :
| Non. | Méthode& Description |
|---|---|
| 1 | Cookie[] getCookies()Renvoie un tableau de tous les cookies du client |
| 2 | Enumeration getAttributeNames()Renvoie une collection de tous les noms d'attributs de l'objet request |
| 3 | Enumeration getHeaderNames()Renvoie une collection des noms de tous les en-têtes HTTP |
| 4 | Enumeration getParameterNames()Renvoie une collection de tous les paramètres de la requête |
| 5 | HttpSession getSession()Renvoie l'objet session correspondant à la requête, ou en crée un s'il n'existe pas |
| 6 | HttpSession getSession(boolean create)Renvoie l'objet session correspondant à la requête. S'il n'y en a pas et que le paramètre create vaut true, renvoie un nouvel objet session. |
| 7 | Locale getLocale()Renvoie l'objet Locale de la page actuelle, qui peut être défini dans la réponse |
| 8 | Object getAttribute(String name)Renvoie la valeur de l'attribut portant le nom spécifié, ou null s'il n'existe pas. |
| 9 | ServletInputStream getInputStream()Renvoie le flux d'entrée de la requête |
| 10 | String getAuthType()Renvoie le nom du schéma d'authentification utilisé pour protéger la servlet, tel que "BASIC" ou "SSL", ou null si la JSP n'a défini aucune mesure de protection. |
| 11 | String getCharacterEncoding()Renvoie le nom de l'encodage des caractères de la requête |
| 12 | String getContentType()Renvoie le type MIME du corps de la requête, ou null s'il est inconnu |
| 13 | String getContextPath()Renvoie le chemin de contexte spécifié dans l'URI de la requête |
| 14 | String getHeader(String name)Renvoie l'en-tête spécifié par name |
| 15 | String getMethod()Renvoie la méthode HTTP de cette requête, telle que GET, POST ou PUT |
| 16 | String getParameter(String name)Renvoie le paramètre portant le nom spécifié dans cette requête, ou null s'il n'existe pas |
| 17 | String getPathInfo()Renvoie toute information de chemin supplémentaire associée à l'URL de cette requête |
| 18 | String getProtocol()Renvoie le nom et la version du protocole utilisés par cette requête |
| 19 | String getQueryString()Renvoie la chaîne de requête contenue dans l'URL de cette requête |
| 20 | String getRemoteAddr()Renvoie l'adresse IP du client |
| 21 | String getRemoteHost()Renvoie le nom pleinement qualifié du client |
| 22 | String getRemoteUser()Renvoie l'utilisateur qui a été authentifié via une connexion sur le client, ou null si l'utilisateur n'a pas été authentifié |
| 23 | String getRequestURI()Renvoie l'URI de la requête |
| 24 | String getRequestedSessionId()Renvoie l'ID de session spécifié par la requête |
| 25 | String getServletPath()Renvoie le chemin du servlet demandé |
| 26 | String[] getParameterValues(String name)Renvoie toutes les valeurs du paramètre avec le nom spécifié, ou null s'il n'existe pas |
| 27 | boolean isSecure()Renvoie si la requête a utilisé un canal sécurisé, tel que HTTPS |
| 28 | int getContentLength()Renvoie le nombre d'octets contenus dans le corps de la requête, ou -1 si inconnu |
| 29 | int getIntHeader(String name)Renvoie la valeur de l'en-tête de requête avec le nom spécifié |
| 30 | int getServerPort()Renvoie le numéro de port du serveur |
Exemple d'en-tête HTTP
Dans cet exemple, nous utiliserons la méthode getHeaderNames() de la classe HttpServletRequest pour lire les en-têtes HTTP. Cette méthode renvoie les informations d'en-tête de la requête HTTP actuelle sous la forme d'une énumération.
Après avoir obtenu l'objet Enumeration, parcourez l'objet Enumeration de manière standard, utilisez la méthode hasMoreElements() pour déterminer quand s'arrêter, et utilisez la méthode nextElement() pour obtenir le nom de chaque paramètre.
<%@ 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>Example(example.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>
Visiter main.jsp produira le résultat suivant :

Vous pouvez essayer d'autres méthodes de la classe HttpServletRequest dans le code ci-dessus.
Autres extensions