Demande du client JSP
Lorsque le navigateur demande une page Web, il envoie une série d'informations au serveur réseau qui ne peuvent pas être lues directement car les informations sont transmises dans le cadre de l'en-tête 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 :
Informations | Description |
---|---|
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-Charset | Spécifie le jeu de caractères à utiliser par le navigateur. Par exemple, ISO-8859-1 |
Accepter-Encoding | Spécifiez le type de codage. Sa valeur est généralement gzip ou compress |
Accepter-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. Par exemple, en, en-us, ru, etc. |
Autorisation | Identifiez différents utilisateurs lorsque vous accédez à 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 les connexions persistantes |
Longueur du contenu | Applicable uniquement aux requêtes POST, indiquant le nombre d'octets de données POST |
Cookie | Renvoyez les cookies précédemment envoyés au navigateur au 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é après la date indiqué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, alors 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 request de classe HttpServletRequest
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 request 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& Description |
---|---|
1 | Cookie[] getCookies() |
2 | Énumération getAttributeNames() |
3 | Énumération getHeaderNames() |
4 | Énumération getParameterNames() |
5 | HttpSession getSession() |
. 6 | HttpSession getSession (création booléenne) |
est renvoyé. 7 | Locale getLocale() |
8 | Objet getAttribute(Nom de la chaîne) |
9 | ServletInputStream getInputStream() |
10 | Chaîne getAuthType() |
11 | String getCharacterEncoding() |
12 | Chaîne getContentType() |
13 | Chaîne getContextPath() |
14 | String getHeader(Nom de la chaîne) |
15 | Chaîne getMethod() |
16 | String getParameter(Nom de la chaîne) |
17 | Chaîne getPathInfo() |
18 | Chaîne getProtocol() |
19 | String getQueryString() |
contenue dans cette URL de requête 20 | Chaîne getRemoteAddr() |
21 | Chaîne getRemoteHost() |
22 | Chaîne getRemoteUser() |
. 23 | Chaîne getRequestURI() |
24 | String getRequestedSessionId() |
25 | Chaîne getServletPath() |
26 | String[] getParameterValues(String name) |
27 | booléen isSecure() |
28 | int getContentLength() |
. 29 | int getIntHeader(Nom de la chaîne) |
30 | int getServerPort() |
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 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, utilisez la méthode hasMoreElements() pour déterminer quand 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>php中文网(php.cn)</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>
Accédez à main.jsp, vous obtiendrez les résultats suivants :
Vous pouvez essayer d'autres méthodes de la classe HttpServletRequest dans le code ci-dessus.