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