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 les 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 de l'en-tête d'informations côté navigateur. Vous verrez souvent ces informations dans la programmation réseau future :
information | décrire |
---|---|
Accepter | Spécifie les types MIME que le navigateur ou un autre client peut gérer. Sa valeur est généralement image/png ou image/jpeg |
Accepter le jeu de caractères | Spécifie le jeu de caractères à utiliser par le navigateur. Tel que ISO-8859-1 |
Accepter-Encodage | Spécifiez le type de codage. Sa valeur est généralement gzip ou compress |
Accepter la langue | Spécifiez la langue préférée du client. La servlet donnera la priorité au renvoi d'un jeu de résultats dans la langue actuelle, si la servlet prend en charge cette langue. Tels que en, en-us, ru, etc. |
Autorisation | Identifiez 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 HTTP persistantes. Les connexions persistantes permettent au client ou au navigateur de récupérer plusieurs fichiers en une seule requête. Keep-Alive signifie activer des connexions persistantes |
Longueur du contenu | S'applique uniquement aux requêtes POST, indiquant le nombre d'octets de données POST |
Cookies | Renvoie les cookies préalablement envoyés au navigateur vers le serveur |
Hôte | Indiquez le nom d'hôte et le numéro de port dans l'URL d'origine |
Si-Modifié-Depuis | Indique que le client n'a besoin de cette page web que si elle a été modifiée à la date spécifiée. Le serveur envoie un code 304 au client, indiquant qu'il n'y a pas de ressources mises à jour. |
Si-non modifié-depuis | Contrairement à If-Modified-Since, l'opération ne réussira que si le document n'a pas été modifié depuis la date spécifiée. |
Référent | Marque l'URL de la page référencée. Par exemple, si vous êtes sur la page 1 et que vous cliquez ensuite sur un lien vers la page 2, l'URL de la page 1 sera incluse dans l'en-tête de la requête du navigateur pour la page 2. |
Agent utilisateur | Utilisé pour distinguer les requêtes envoyées par différents navigateurs ou clients et renvoyer différents contenus à différents types de navigateurs |
L'objet de requête est une instance de la classe javax.servlet.http.HttpServletRequest. Chaque fois qu'un client demande une page, le moteur JSP génère un nouvel objet pour représenter la demande.
L'objet de requête fournit une série de méthodes pour obtenir des en-têtes d'informations HTTP, notamment des données de formulaire, des cookies, des méthodes HTTP, etc.
Ensuite, nous présenterons quelques méthodes couramment utilisées dans la programmation JSP pour obtenir des en-têtes d'informations HTTP. Veuillez consulter le tableau ci-dessous pour plus de détails :
numéro de série | Méthode et description |
---|---|
1 | Cookie[] getCookies() renvoie un tableau de tous les cookies sur le client |
2 | L'énumération getAttributeNames() renvoie une collection de tous les noms d'attributs de l'objet de requête |
3 | L'énumération getHeaderNames() renvoie une collection de noms de tous les en-têtes HTTP |
4 | L'énumération getParameterNames() renvoie une collection de tous les paramètres de la requête |
5 | HttpSession getSession() renvoie l'objet session correspondant à la requête. Sinon, créez-en un. |
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 est vrai, un nouvel objet session est renvoyé. |
7 | Locale getLocale() renvoie l'objet Locale de la page actuelle, qui peut être défini en réponse |
8 | L'objet getAttribute(String name) renvoie la valeur de l'attribut nommée name, ou null si elle n'existe pas. |
9 | ServletInputStream getInputStream() renvoie le flux d'entrée demandé |
10 | String getAuthType() renvoie le nom du schéma d'authentification utilisé pour protéger le servlet, tel que "BASIC" ou "SSL" ou null si JSP ne définit pas de mesures de protection |
11 | String getCharacterEncoding() renvoie le nom du jeu de codage de 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 d'informations spécifié par name |
15 | String getMethod() renvoie la méthode HTTP dans cette requête, telle que GET, POST ou PUT |
16 | String getParameter(String name) renvoie le paramètre spécifié par name dans cette requête, ou null s'il n'existe pas. |
17 | La chaîne getPathInfo() renvoie tous les chemins supplémentaires associés à cette URL de requête |
18 | String getProtocol() renvoie le nom du protocole et la version utilisés par cette requête |
19 | String getQueryString() renvoie la chaîne de requête contenue dans cette URL de requête |
20 | La chaîne getRemoteAddr() renvoie l'adresse IP du client |
vingt-et-un | String getRemoteHost() renvoie le nom complet du client |
vingt-deux | String getRemoteUser() renvoie l'utilisateur authentifié par le client via la connexion, ou null si l'utilisateur n'est pas authentifié. |
vingt-trois | La chaîne getRequestURI() renvoie l'URI de la requête |
vingt-quatre | La chaîne getRequestedSessionId() renvoie l'ID de session spécifié par la demande |
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 utilise un canal crypté, tel que HTTPS |
28 | int getContentLength() renvoie le nombre d'octets contenus dans le corps de la requête. S'il est inconnu, il renvoie -1. |
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 |
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 en cours sous la forme d'une énumération.
Après avoir obtenu l'objet Enumeration, utilisez la méthode standard pour parcourir l'objet Enumeration, en utilisant la méthode hasMoreElements() pour déterminer quand s'arrêter et la méthode nextElement() pour obtenir le nom de chaque paramètre.
<%@ page import="java.io.*,java.util.*" %><html><head><title>Exemple de demande d'en-tête HTTP</title></head><body><center><h2 >Exemple de demande d'en-tête HTTP</h2><table align="center"><tr bgcolor="#949494"><th>Nom de l'en-tête</th><th>Valeur(s) d'en-tête</th></tr ><% Énumération 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>
Accédez à main.jsp, vous obtiendrez les résultats suivants :
Nom de l'en-tête | Valeur(s) d'en-tête |
---|---|
accepter | */* |
accepter la langue | fr-nous |
agent utilisateur | Mozilla/4.0 (compatible ; MSIE 7.0 ; Windows NT 5.1 ; Trident/4.0 ; InfoPath.2 ; MS-RTC LM 8) |
accepter-encodage | gzip, dégonfler |
hôte | hôte local : 8080 |
connexion | Rester en vie |
contrôle du cache | sans cache |
Vous pouvez essayer d'autres méthodes de la classe HttpServletRequest dans le code ci-dessus.