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

Solicitud HTTP del cliente Servlet

Cuando el navegador solicita una página web, envía información específica al servidor web, esta información no se puede leer directamente porque se transmite como parte de la cabecera de la solicitud HTTP. Puede ver Protocolo HTTP Para obtener más información.

A continuación, se presentan las importantes informaciones de encabezado del lado del navegador, que se utilizan con frecuencia en la programación web:

Información de encabezadoDescripción
AceptarEsta información de encabezado especifica los tipos de MIME que pueden manejar el navegador u otros clientes. Valor imagen/png o imagen/jpeg Son los dos valores más comunes.
Aceptar-Conjunto de caracteresEsta información de encabezado especifica el conjunto de caracteres que el navegador puede usar para mostrar información. Por ejemplo, ISO-8859-1.
Aceptar-CodificaciónEsta información de encabezado especifica los tipos de codificación que el navegador puede manejar. Valor gzip o compress Son los dos valores más comunes.
Aceptar-IdiomaEsta información de encabezado especifica el idioma preferido del cliente, en este caso, el Servlet generará resultados en varios idiomas. Por ejemplo, en, en-us, ru, etc.
AutorizaciónEsta información de encabezado se utiliza para identificar la identidad del cliente al acceder a páginas web protegidas por contraseña.
ConexiónEsta información de encabezado indica si el cliente puede manejar la conexión HTTP persistente. La conexión persistente permite que el cliente u otros navegadores reciban varios archivos a través de una sola solicitud. Valor Mantener-Viva Significa que se usó una conexión persistente.
Contenido-LongitudEsta información de encabezado solo se aplica a solicitudes POST y da el tamaño de los datos POST (en bytes).
CookieEsta información de encabezado devuelve a los servidores los cookies enviados anteriormente al navegador.
HostEsta información de encabezado especifica el host y el puerto de la URL original.
If-Modified-SinceEsta información de encabezado indica que el cliente desea la página web que se modificó después de la fecha especificada. Si no hay nuevos resultados disponibles para usar, el servidor enviará un 304 Código que representa No Modificado encabezado.
If-Unmodified-SinceEsta información de encabezado es If-Modified-El opuesto a Since, especifica que la operación tendrá éxito solo cuando el documento sea anterior a la fecha especificada.
RefererEsta información de encabezado indica la URL del sitio web web apuntado. Por ejemplo, si está en una página web 1Cuando hace clic en un enlace a una página web 2Cuando el navegador solicita una página web 2 En el momento en que 1 La URL se incluirá en la información de encabezado Referer.
Usuario-AgenteEsta información de encabezado identifica el navegador o otro cliente que envía la solicitud y puede devolver diferentes contents a diferentes tipos de navegadores.

Métodos para leer cabeceras HTTP

Los siguientes métodos están disponibles en los programas Servlet para leer las cabeceras HTTP. Estos métodos a través de HttpServletRequest Objeto disponible.

Número de serieMétodo & Descripción
1getCookies()
Devuelve un array que contiene todos los objetos Cookie que envió el cliente con la solicitud.
2getAttributeNames()
Devuelve un enumerado que contiene los nombres de atributos disponibles para la solicitud.
3getHeaderNames()
Devuelve un enumerado que contiene todos los nombres de encabezado que se incluyen en la solicitud.
4getParameterNames()
Devuelve un enumerado de objetos String que contiene los nombres de los parámetros que se incluyen en la solicitud.
5getSession()
Devuelve la sesión de sesión actual asociada con la solicitud o si la solicitud no tiene sesión de sesión, crea una.
6getSession(boolean create)
Devuelve la HttpSession asociada con la solicitud actual, o si no hay sesión actual y se crea es verdadero, devuelve una nueva sesión de sesión.
7getLocale()
Basado en Accept-Encabezado de idioma, devuelve la configuración regional preferida del cliente para aceptar contenido.
8Object getAttribute(String name)
Devuelve el valor de la propiedad nombrada en forma de objeto, o null si no existe la propiedad con el nombre dado.
9ServletInputStream getInputStream()
Recupera el cuerpo del pedido en forma de datos binarios utilizando ServletInputStream.
10String getAuthType()
Devuelve el nombre del esquema de autenticación utilizado para proteger el Servlet, por ejemplo, "BASIC" o "SSL", o null si el JSP no está protegido.
11String getCharacterEncoding()
Devuelve el nombre del código de carácter utilizado en el cuerpo de solicitud.
12String getContentType()
Devuelve el tipo MIME del cuerpo de solicitud, o null si no se conoce el tipo.
13String getContextPath()
Devuelve la parte del URI de contexto de solicitud que indica el contexto de solicitud.
14String getHeader(String name)
Devuelve el valor del encabezado de solicitud especificado en forma de cadena.
15String getMethod()
Devuelve el nombre del método HTTP de solicitud, por ejemplo, GET, POST o PUT.
16String getParameter(String name)
Devuelve el valor del parámetro de solicitud en forma de cadena, o null si el parámetro no existe.
17String getPathInfo()
Devuelve cualquier información de ruta adicional relacionada con la URL enviada por el cliente cuando se realiza la solicitud.
18String getProtocol()
Devuelve el nombre y la versión del protocolo de solicitud.
19String getQueryString()
Devuelve la cadena de consulta que se incluye en la URL del pedido después de la ruta.
20String getRemoteAddr()
Devuelve la dirección IP (IP) del cliente que envía la solicitud.
21String getRemoteHost()
Devuelve el nombre completo del cliente que envía la solicitud.
22String getRemoteUser()
Devuelve el usuario que realiza la solicitud si el usuario ha sido autenticado, o null si el usuario no ha sido autenticado.
23String getRequestURI()
Parte de la URL del pedido que se devuelve en la consulta de la primera línea de solicitud HTTP hasta el nombre del protocolo.
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)
//Extender la clase HttpServlet
public class DisplayHeader extends HttpServlet {
    // Método para manejar solicitudes de método GET
    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
    {
        // Establecer tipo de contenido de respuesta
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        String title = "Ejemplo de solicitud de encabezado HTTP" - Ejemplo de la página de tutorial básico";
        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>Nombre de encabezado</th><th>Valor de encabezado</th>\n"+
            "</tr>\n");
        Enumeration headerNames = request.getHeaderNames();
        while(headerNames.hasMoreElements()) {
            String paramName = (String)headerNames.nextElement();
            <tr><td> +  + "</td>\n
            String paramValue = request.getHeader(paramName);
            <td> + paramValue + "</td></tr>\n");
        }
        out.println("</table>\n</body></html>");
    }
    // Método para manejar solicitudes de método POST
    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response);
    }
}

Este ejemplo de prueba está ubicado en el proyecto TomcatTest, la configuración correspondiente web.xml es la siguiente:

<?xml version="1.0" encoding="UTF-8"?>  
<web-app>  
  <servlet  
    <!-- Nombre de la clase -->  
    <servlet-name>DisplayHeader</servlet-name>  
    <!-- El paquete en el que se encuentra -->  
    <servlet-class>com.w3codebox.test.DisplayHeader</servlet-class>  
  </servlet>  
  <servlet-mapping>  
    <servlet-name>DisplayHeader</servlet-name>  
    <!-- La dirección web visitada -->  
    <url-patrón>/TomcatTest/DisplayHeader</url-patrón>  
  </servlet-mapping>  
</web-app>

Ahora, llama al Servlet superior, accede a http://localhost:8080/TomcatTest/DisplayHeader Se producirá el siguiente resultado: