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

Requête HTTP client Servlet

Lorsque le navigateur demande une page web, il envoie des informations spécifiques au serveur Web, ces informations ne peuvent pas être lues directement car elles sont transmises en tant que partie de l'en-tête de la requête HTTP. Vous pouvez consulter Protocole HTTP En savoir plus sur les informations pertinentes.

Voici quelques en-têtes importantes venant du navigateur, que vous pouvez utiliser fréquemment dans le développement Web :

En-têteDescription
AcceptCette en-tête indique les types MIME que le navigateur ou le client peut traiter. Valeur image/png ou image/jpeg Ce sont les deux valeurs les plus courantes.
Accept-CharsetCette en-tête indique le jeu de caractères que le navigateur peut utiliser pour afficher des informations. Par exemple, ISO-8859-1。
Accept-EncodingCette en-tête indique les types de codage que le navigateur sait traiter. Valeur gzip ou compress Ce sont les deux valeurs les plus courantes.
Accept-LanguageCette en-tête spécifie la langue préférée du client, dans ce cas, le Servlet générera des résultats dans plusieurs langues. Par exemple, en, en-us, ru, etc.
AuthorizationCette en-tête est utilisée par le client pour identifier son identité lors de l'accès à des pages web protégées par mot de passe.
ConnectionCette en-tête indique si le client peut gérer la connexion HTTP persistante. La connexion persistante permet au client ou à d'autres navigateurs de récupérer plusieurs fichiers via une seule requête. Valeur Keep-Alive Signifie que la connexion persistante a été utilisée.
Content-LengthCette information d'en-tête ne s'applique qu'aux requêtes POST et indique la taille des données POST (en octets).
CookieCette information d'en-tête renvoie les cookies précédemment envoyés au serveur par le navigateur.
HostCette information d'en-tête spécifie l'hôte et le port de l'URL originale.
If-Modified-SinceCette information d'en-tête indique que le client veut la page si elle a été modifiée après la date spécifiée. Si il n'y a pas de nouveaux résultats à utiliser, le serveur enverra un 304 Code, qui représente Not Modified en-tête.
If-Unmodified-SinceCette information d'en-tête est If-Modified-L'opposé de Since, il spécifie que l'opération ne réussira que si le document est antérieur à la date spécifiée.
RefererCette information d'en-tête indique l'URL du Web page pointée. 1, en cliquant sur un lien vers une page web 2, lorsque le navigateur demande une page web 2 Lorsque 1 L'URL de l'utilisateur se trouvera dans l'en-tête Referer.
User-AgentCette information d'en-tête reconnaît le navigateur ou autre client qui a envoyé la requête et peut renvoyer du contenu différent pour différents types de navigateurs.

Méthodes de lecture des en-têtes HTTP

Les méthodes suivantes sont disponibles dans les programmes Servlet pour lire les en-têtes HTTP. Ces méthodes passent par HttpServletRequest Objet disponible.

NuméroMéthode & Description
1getCookies()
Retourne un tableau contenant tous les objets Cookie envoyés par le client pour cette requête.
2getAttributeNames()
Retourne un objet Enumeration contenant les noms des attributs disponibles pour la requête.
3getHeaderNames()
Retourne un objet Enumeration contenant tous les noms d'en-tête inclus dans la requête.
4getParameterNames()
Retourne un objet Enumeration contenant les noms des paramètres inclus dans la requête.
5getSession()
Retourne le session session associé à la requête actuelle, ou en crée un si la requête n'a pas de session.
6getSession(boolean create)
Retourne le HttpSession associé à la requête actuelle, ou un nouveau session session s'il n'y a pas de session actuelle et que la création est véridique.
7getLocale()
Basé sur Accept-En-tête Language, retourne la préférence de région acceptée par le client pour le contenu.
8Object getAttribute(String name)
Retourne la valeur de l'attribut nommé sous forme d'objet, ou null si l'attribut avec le nom donné n'existe pas.
9ServletInputStream getInputStream()
Utilise ServletInputStream pour récupérer le corps de la requête sous forme de données binaires.
10String getAuthType()
Retourne le nom du schéma d'authentification utilisé pour protéger le Servlet, par exemple, "BASIC" ou "SSL", ou null si le JSP n'est pas protégé.
11String getCharacterEncoding()
Retourne le nom de l'encodage de caractères utilisé pour le corps de la requête.
12String getContentType()
Retourne le type MIME du corps de la requête, ou null si le type est inconnu.
13String getContextPath()
Retourne la partie de l'URI indiquant le contexte de la requête.
14String getHeader(String name)
Retourne la valeur de l'en-tête de requête spécifié sous forme de chaîne de caractères.
15String getMethod()
Retourne le nom de la méthode HTTP de la requête, par exemple, GET, POST ou PUT.
16String getParameter(String name)
Retourne la valeur de la variable de requête sous forme de chaîne de caractères, ou null si le paramètre n'existe pas.
17String getPathInfo()
Retourne tout chemin d'accès supplémentaire lié à l'URL envoyée par le client lors de la requête.
18String getProtocol()
Retourne le nom et la version du protocole de la requête.
19String getQueryString()
Retourne la chaîne de caractères de la requête URL incluse après le chemin.
20String getRemoteAddr()
Retourne l'adresse IP (IP) du client ayant envoyé la requête.
21String getRemoteHost()
Retourne le nom complet du client ayant envoyé la requête.
22String getRemoteUser()
Retourne l'utilisateur connecté ayant envoyé la requête si l'utilisateur est authentifié, ou null si l'utilisateur n'est pas authentifié.
23String getRequestURI()
De la nom du protocole jusqu'à la première ligne de la requête HTTP, retourne une partie de l'URL de la requête.
24String getRequestedSessionId()
返回由客户端指定的 session 会话 ID。
25String getServletPath()
返回调用 JSP 的请求的 URL 的一部分。
26String[] getParameterValues(String name)
返回一个字符串对象的数组,包含所有给定的请求参数的值,如果参数不存在则返回 null。
27boolean isSecure()
返回一个布尔值,指示请求是否使用安全通道,如 HTTPS。
28int getContentLength()
以字节为单位返回请求主体的长度,并提供输入流,或者如果长度未知则返回 -1。
29int getIntHeader(String name)
返回指定的请求头的值为一个 int 值。
30int getServerPort()
返回接收到这个请求的端口号。
31int getParameterMap()
将参数封装成 Map 类型。

HTTP Header 请求示例

下面的示例使用 HttpServletRequest 的 getHeaderNames() 方法读取 HTTP 头信息。该方法返回一个枚举,包含与当前的 HTTP 请求相关的头信息。

一旦我们有一个枚举,我们可以以标准方式循环枚举,使用 hasMoreElements() 方法来确定何时停止,使用 nextElement() 方法来获取每个参数的名称。

//导入必需的 java 库
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Enumeration;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/DisplayHeader")
//扩展 HttpServlet 类
public class DisplayHeader extends HttpServlet {
    // 处理 GET 方法请求的方法
    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
    {
        // 设置响应内容类型
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        String title = "HTTP Header 请求示例 - 基础教程网示例";
        String docType =
            "<!DOCTYPE html> \n";
            out.println(docType +
            "<html>\n" +
            "<head><meta charset=\"utf-8\"><title>" + title + "</title></head>\n"+
            "<body bgcolor=\"#f0f0f0\">\n" +
            "<h1 align=\"center\">" + title + "</h1>\n" +
            "<table width=\"100%\" border=\"1\" align=\"center\">\n" +
            "<tr bgcolor=\"#949494\">\n" +
            "<th>Header 名称</th><th>Header 值</th>\n"+
            "</tr>\n");
        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");
        }
        out.println("</table>\n</body></html>");
    }
    // Méthode pour traiter les requêtes de méthode POST
    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response);
    }
}

Les exemples de test ci-dessus se trouvent sous le projet TomcatTest, la configuration correspondante de web.xml est :

<?xml version="1.0" encoding="UTF-8"?>  
</web-app>  
  </servlet>  
    <!-- Nom de la classe -->  
    <servlet-name>DisplayHeader</servlet-name>  
    <!-- Paquet où se trouve -->  
    <servlet-</class>com.w3codebox.test.DisplayHeader</servlet-<class>  
  </</servlet>  
  <servlet-mapping>  
    <servlet-name>DisplayHeader</servlet-name>  
    <!-- L'adresse du site visité -->  
    <url-pattern>/TomcatTest/DisplayHeader</url-pattern>  
  </servlet-mapping>  
</web-app>

Maintenant, appeler le Servlet ci-dessus, accéder à http://localhost:8080/TomcatTest/DisplayHeader Produira le résultat suivant :