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