JSP Solicitud de cliente
Cuando un navegador solicita una página web, envía una serie de información al servidor web que no se puede leer directamente, ya que esta 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 de los encabezados de información del lado del navegador, que se encontrarán con frecuencia en la programación de red futura:
| Información | Descripción |
|---|---|
| Accept | Especifica los tipos MIME que el navegador u otro cliente puede manejar. Su valor suele serimage/pngoimage/jpeg |
| Accept-Charset | Especifica el conjunto de caracteres que usará el navegador. Por ejemplo, ISO-8859-1 |
| Accept-Encoding | Especifica el tipo de codificación. Su valor suele sergzipocompress |
| Accept-Language | Especifica el idioma preferido del cliente; el servlet devolverá preferentemente el conjunto de resultados en el idioma actual, si el servlet es compatible con ese idioma. Por ejemplo: en, en-us, ru, etc. |
| Authorization | Identifica a diferentes usuarios al acceder a páginas web protegidas por contraseña |
| Connection | Indica si el cliente puede manejar conexiones persistentes HTTP. Las conexiones persistentes permiten al cliente o navegador obtener múltiples archivos en una sola solicitud.Keep-AliveIndica que la conexión persistente está habilitada |
| Content-Length | Solo aplica a solicitudes POST; indica el número de bytes de los datos POST |
| Cookie | Devuelve al servidor las cookies previamente enviadas al navegador |
| Host | Señala el nombre de host y el número de puerto en la URL original |
| If-Modified-Since | Indica que el cliente solo necesita esta página si fue modificada después de la fecha especificada. El servidor envía el código 304 al cliente para indicar que no hay recursos más recientes. |
| If-Unmodified-Since | Al contrario de If-Modified-Since, la operación solo tendrá éxito si el documento no ha sido modificado después de la fecha especificada. |
| Referer | Marca la URL de la página de referencia. Por ejemplo, si estás en la página 1 y haces 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 a la página 2. |
| User-Agent | Se utiliza para distinguir las solicitudes enviadas por diferentes navegadores o clientes, y devolver contenido diferente según el tipo de navegador. |
Clase HttpServletRequest
El objeto request es una instancia de la clase javax.servlet.http.HttpServletRequest. Cada vez que el cliente solicita una página, el motor JSP genera un nuevo objeto que representa esta solicitud.
El objeto request proporciona una serie de métodos para obtener encabezados HTTP, incluidos datos de formularios, cookies, métodos HTTP, etc.
A continuación se presentan algunos métodos comunes en la programación JSP para obtener encabezados HTTP. Para más detalles, consulte la siguiente tabla:
| N.º | Método& Descripción |
|---|---|
| 1 | Cookie[] getCookies()Devuelve un array de todas las cookies del cliente |
| 2 | Enumeration getAttributeNames()Devuelve una colección de todos los nombres de atributos del objeto request |
| 3 | Enumeration getHeaderNames()Devuelve una colección de nombres de todos los encabezados HTTP |
| 4 | Enumeration getParameterNames()Devuelve una colección de todos los parámetros de la solicitud |
| 5 | HttpSession getSession()Devuelve el objeto session correspondiente a la solicitud; si no existe, lo crea |
| 6 | HttpSession getSession(boolean create)Devuelve el objeto session correspondiente a la solicitud; si no existe y el parámetro create es true, devuelve un nuevo objeto session |
| 7 | Locale getLocale()Devuelve el objeto Locale de la página actual, que se puede configurar en la respuesta |
| 8 | Object getAttribute(String name)Devuelve el valor del atributo con nombre name, o null si no existe. |
| 9 | ServletInputStream getInputStream()Devuelve el flujo de entrada de la solicitud |
| 10 | String getAuthType()Devuelve el nombre del esquema de autenticación utilizado para proteger el servlet, como 'BASIC' o 'SSL', o null si el JSP no tiene medidas de protección configuradas |
| 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 null si se desconoce |
| 13 | String getContextPath()Devuelve la ruta de contexto indicada en el URI de la solicitud |
| 14 | String getHeader(String name)Devuelve el encabezado especificado por name |
| 15 | String getMethod()Devuelve el método HTTP de esta solicitud, como GET, POST o PUT |
| 16 | String getParameter(String name)Devuelve el parámetro especificado por name en esta solicitud, o null si no existe |
| 17 | String getPathInfo()Devuelve cualquier ruta adicional relacionada con la URL de esta solicitud |
| 18 | String getProtocol()Devuelve el nombre y la versión del protocolo utilizado por esta solicitud |
| 19 | String getQueryString()Devuelve la cadena de consulta contenida en la URL de esta solicitud |
| 20 | String getRemoteAddr()Devuelve la dirección IP del cliente |
| 21 | String getRemoteHost()Devuelve el nombre completo del cliente |
| 22 | String getRemoteUser()Devuelve el usuario autenticado del cliente; si el usuario no está autenticado, devuelve null |
| 23 | String getRequestURI()Devuelve el URI de la solicitud |
| 24 | String getRequestedSessionId()Devuelve el ID de sesión especificado por la solicitud |
| 25 | String getServletPath()Devuelve la ruta del servlet solicitado |
| 26 | String[] getParameterValues(String name)Devuelve todos los valores del parámetro con el nombre especificado, o null 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, o -1 si se desconoce |
| 29 | int getIntHeader(String name)Devuelve el valor del encabezado de solicitud con el nombre especificado |
| 30 | int getServerPort()Devuelve el número de puerto del servidor |
Ejemplo de encabezados de información HTTP
En este ejemplo, usaremos el método getHeaderNames() de la clase HttpServletRequest para leer los encabezados HTTP. Este método devuelve los encabezados de la solicitud HTTP actual en forma de enumeración.
Después de obtener el objeto Enumeration, recorra el objeto Enumeration de la manera estándar: use el método hasMoreElements() para determinar cuándo detenerse y el método nextElement() para obtener el nombre de cada parámetro.
<%@ 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>Ejemplo(example.com)</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>
Al acceder a main.jsp, se obtendrá el siguiente resultado:

Puede probar otros métodos de la clase HttpServletRequest en el código anterior.
Otras extensiones