Cuando un navegador solicita una página web, envía una serie de información al servidor web que no se puede leer directamente porque la información se transmite como parte de los encabezados HTTP. Puede consultar el protocolo HTTP para obtener más información.
La siguiente tabla enumera algunos contenidos importantes del encabezado de información del lado del navegador. A menudo verá esta información en la programación de red futura:
información | describir |
---|---|
Aceptar | Especifica los tipos MIME que el navegador u otro cliente puede manejar. Su valor suele ser image/png o image/jpeg. |
Aceptar juego de caracteres | Especifica el juego de caracteres que utilizará el navegador. Como ISO-8859-1 |
Aceptar codificación | Especifique el tipo de codificación. Su valor suele ser gzip o compress. |
Aceptar-Idioma | Especifique el idioma preferido del cliente. El servlet dará prioridad a devolver un conjunto de resultados en el idioma actual, si el servlet admite este idioma. Como en, en-us, ru, etc. |
Autorización | Identificar diferentes usuarios al acceder a páginas web protegidas con contraseña |
Conexión | Indica si el cliente puede manejar conexiones persistentes HTTP. Las conexiones persistentes permiten al cliente o navegador recuperar varios archivos en una sola solicitud. Keep-Alive significa permitir conexiones persistentes |
Longitud del contenido | Se aplica únicamente a solicitudes POST, lo que indica el número de bytes de datos POST |
Galletas | Devuelve al servidor las cookies enviadas previamente al navegador |
Anfitrión | Indique el nombre de host y el número de puerto en la URL original |
Si-modificado-desde | Indica que el cliente sólo necesita esta página web si ha sido modificada en la fecha especificada. El servidor envía un código 304 al cliente, indicando que no hay recursos actualizados. |
Si-sin modificar-desde | A diferencia de If-Modified-Since, la operación tendrá éxito sólo si el documento no ha sido modificado desde la fecha especificada |
árbitro | Marca la URL de la página referenciada. Por ejemplo, si está en la página 1 y luego hace clic en un enlace a la página 2, la URL de la página 1 se incluirá en el encabezado de la solicitud del navegador para la página 2. |
Agente de usuario | Se utiliza para distinguir solicitudes enviadas por diferentes navegadores o clientes y devolver contenido diferente a diferentes tipos de navegadores. |
El objeto de solicitud es una instancia de la clase javax.servlet.http.HttpServletRequest. Cada vez que un cliente solicita una página, el motor JSP genera un nuevo objeto para representar la solicitud.
El objeto de solicitud proporciona una serie de métodos para obtener encabezados de información HTTP, incluidos datos de formulario, cookies, métodos HTTP, etc.
A continuación, presentaremos algunos métodos comúnmente utilizados en la programación JSP para obtener encabezados de información HTTP. Consulte la siguiente tabla para obtener más detalles:
número de serie | Método y descripción |
---|---|
1 | Cookie[] getCookies() devuelve una matriz de todas las cookies en el cliente |
2 | La enumeración getAttributeNames() devuelve una colección de todos los nombres de atributos del objeto de solicitud. |
3 | La enumeración getHeaderNames() devuelve una colección de nombres de todos los encabezados HTTP. |
4 | La enumeración getParameterNames() devuelve una colección de todos los parámetros de la solicitud. |
5 | HttpSession getSession() devuelve el objeto de sesión correspondiente a la solicitud. Si no, crea uno. |
6 | HttpSession getSession (creación booleana) devuelve el objeto de sesión correspondiente a la solicitud. Si no hay ninguno y el parámetro crear es verdadero, se devuelve un nuevo objeto de sesión. |
7 | Locale getLocale() devuelve el objeto Locale de la página actual, que se puede configurar en respuesta |
8 | El objeto getAttribute(String name) devuelve el valor del atributo denominado nombre, o nulo si no existe. |
9 | ServletInputStream getInputStream() devuelve el flujo de entrada solicitado |
10 | String getAuthType() devuelve el nombre del esquema de autenticación utilizado para proteger el servlet, como "BASIC" o "SSL" o nulo si JSP no establece medidas de protección. |
11 | String getCharacterEncoding() devuelve el nombre del conjunto de codificación de caracteres de la solicitud |
12 | String getContentType() devuelve el tipo MIME del cuerpo de la solicitud, o nulo si es desconocido. |
13 | String getContextPath() devuelve la ruta de contexto especificada en el URI de solicitud |
14 | String getHeader (nombre de cadena) devuelve el encabezado de información especificado por nombre |
15 | String getMethod() devuelve el método HTTP en esta solicitud, como GET, POST o PUT |
16 | String getParameter(String name) devuelve el parámetro especificado por nombre en esta solicitud, o nulo si no existe. |
17 | String getPathInfo() devuelve cualquier ruta adicional asociada con esta URL de solicitud |
18 | String getProtocol() devuelve el nombre del protocolo y la versión utilizada por esta solicitud |
19 | String getQueryString() devuelve la cadena de consulta contenida en esta URL de solicitud |
20 | String getRemoteAddr() devuelve la dirección IP del cliente |
veintiuno | String getRemoteHost() devuelve el nombre completo del cliente |
Veintidós | String getRemoteUser() devuelve el usuario autenticado por el cliente mediante el inicio de sesión, o nulo si el usuario no está autenticado. |
veintitrés | String getRequestURI() devuelve el URI de la solicitud |
veinticuatro | String getRequestedSessionId() devuelve el ID de sesión especificado por la solicitud |
25 | String getServletPath() devuelve la ruta del servlet solicitada |
26 | String[] getParameterValues(String name) devuelve todos los valores del parámetro con el nombre especificado, o nulo si no existe. |
27 | boolean isSecure() devuelve si la solicitud utiliza un canal cifrado, como HTTPS |
28 | int getContentLength() devuelve el número de bytes contenidos en el cuerpo de la solicitud. Si se desconoce, devuelve -1. |
29 | int getIntHeader(String name) devuelve el valor del encabezado de la solicitud con el nombre especificado |
30 | int getServerPort() devuelve el número de puerto del servidor |
En este ejemplo, usaremos el método getHeaderNames() de la clase HttpServletRequest para leer los encabezados HTTP. Este método devuelve la información del encabezado de la solicitud HTTP actual en forma de enumeración.
Después de obtener el objeto de enumeración, utilice el método estándar para recorrer el objeto de enumeración, utilizando el método hasMoreElements () para determinar cuándo detenerse y el método nextElement () para obtener el nombre de cada parámetro.
<%@ page import="java.io.*,java.util.*" %><html><head><title>Ejemplo de solicitud de encabezado HTTP</title></head><body><center><h2 >Ejemplo de solicitud de encabezado HTTP</h2><table align="center"><tr bgcolor="#949494"><th>Nombre del encabezado</th><th>Valor(es) del encabezado</th></tr ><% Enumeración headerNames = request.getHeaderNames(); while(headerNames.hasMoreElements()) { String paramName = (String)headerNames.nextElement(); n"); String paramValue = request.getHeader(paramName); out.println("<td> " + paramValue + "</td></tr>n"); }%></table></center></body></html>
Acceda a main.jsp, obtendrá los siguientes resultados:
Nombre del encabezado | Valor(es) del encabezado |
---|---|
aceptar | */* |
aceptar-idioma | es-us |
agente de usuario | Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; InfoPath.2; MS-RTC LM 8) |
aceptar codificación | gzip, desinflar |
anfitrión | servidor local: 8080 |
conexión | Mantener vivo |
control de caché | sin caché |
Puede probar otros métodos de la clase HttpServletRequest en el código anterior.