JSP - Solicitud de cliente

En este capítulo, analizaremos la solicitud del cliente en JSP. Cuando un navegador solicita una página web, envía mucha información al servidor web. Esta información no se puede leer directamente porque esta información viaja como parte del encabezado de la solicitud HTTP. Puede consultar el Protocolo HTTP para obtener más información al respecto.

La siguiente tabla enumera la información importante del encabezado que proviene del navegador. Esta información se utiliza con frecuencia en la programación web:

S.No. Encabezado y descripción
1

Accept

Este encabezado especifica el MIMEtipos que el navegador u otros clientes pueden manejar. Valores deimage/png o image/jpeg son las dos posibilidades más comunes.

2

Accept-Charset

Este encabezado especifica los juegos de caracteres que el navegador puede usar para mostrar la información. Por ejemplo,ISO-8859-1.

3

Accept-Encoding

Este encabezado especifica los tipos de codificaciones que el navegador sabe cómo manejar. Valores degzip o compress son las dos posibilidades más comunes.

4

Accept-Language

Este encabezado especifica los idiomas preferidos del cliente en caso de que el servlet pueda producir resultados en más de un idioma. Por ejemploen, en-us, ruetc.

5

Authorization

Los clientes utilizan este encabezado para identificarse cuando acceden a páginas web protegidas con contraseña.

6

Connection

Este encabezado indica si el cliente puede manejar conexiones HTTP persistentes. Las conexiones persistentes permiten al cliente u otro navegador recuperar varios archivos con una sola solicitud. Un valor deKeep-Alive significa que se deben utilizar conexiones persistentes.

7

Content-Length

Este encabezado es aplicable solo a POST solicita y da el tamaño de los datos POST en bytes.

8

Cookie

Este encabezado devuelve las cookies a los servidores que las enviaron previamente al navegador.

9

Host

Este encabezado especifica el host y el puerto como se indica en la URL original.

10

If-Modified-Since

Este encabezado indica que el cliente desea la página solo si se ha cambiado después de la fecha especificada. El servidor envía un código, 304 que significaNot Modified encabezado si no hay ningún resultado más reciente disponible.

11

If-Unmodified-Since

Este encabezado es el reverso de If-Modified-Since; especifica que la operación debe tener éxito solo si el documento es anterior a la fecha especificada.

12

Referer

Este encabezado indica la URL de las páginas web de referencia. Por ejemplo, si está en la página web 1 y hace clic en un enlace a la página web 2, la URL de la página web 1 se incluye en el encabezado Referer cuando el navegador solicita la página web 2.

13

User-Agent

Este encabezado identifica el navegador u otro cliente que realiza la solicitud y se puede utilizar para devolver contenido diferente a diferentes tipos de navegadores.

El objeto HttpServletRequest

El objeto de solicitud es una instancia de un javax.servlet.http.HttpServletRequestobjeto. Cada vez que un cliente solicita una página, el motor JSP crea un nuevo objeto para representar esa solicitud.

El objeto de solicitud proporciona métodos para obtener información de encabezado HTTP, incluido form data, cookies, HTTP methodsetc.

La siguiente tabla enumera los métodos importantes que se pueden usar para leer el encabezado HTTP en su programa JSP. Estos métodos están disponibles con el objeto HttpServletRequest que representa la solicitud del cliente al servidor web.

S.No. Método y descripción
1

Cookie[] getCookies()

Devuelve una matriz que contiene todos los objetos Cookie que el cliente envió con esta solicitud.

2

Enumeration getAttributeNames()

Devuelve una enumeración que contiene los nombres de los atributos disponibles para esta solicitud.

3

Enumeration getHeaderNames()

Devuelve una enumeración de todos los nombres de encabezados que contiene esta solicitud.

4

Enumeration getParameterNames()

Devuelve una enumeración de los objetos String que contienen los nombres de los parámetros contenidos en esta solicitud.

5

HttpSession getSession()

Devuelve la sesión actual asociada con esta solicitud, o si la solicitud no tiene una sesión, crea una.

6

HttpSession getSession(boolean create)

Devuelve la HttpSession actual asociada con esta solicitud o, si no hay una sesión actual y create es verdadero, devuelve una nueva sesión.

7

Locale getLocale()

Devuelve la configuración regional preferida en la que el cliente aceptará contenido, según el encabezado Accept-Language.

8

Object getAttribute(String name)

Devuelve el valor del atributo nombrado como un Objeto, o nulo si no existe ningún atributo del nombre dado.

9

ServletInputStream getInputStream()

Recupera el cuerpo de la solicitud como datos binarios mediante ServletInputStream.

10

String getAuthType()

Devuelve el nombre del esquema de autenticación utilizado para proteger el servlet, por ejemplo, "BASIC" o "SSL", o nulo si la JSP no estaba protegida.

11

String getCharacterEncoding()

Devuelve el nombre de la codificación de caracteres utilizada en el cuerpo de esta solicitud.

12

String getContentType()

Devuelve el tipo MIME del cuerpo de la solicitud, o nulo si no se conoce el tipo.

13

String getContextPath()

Devuelve la parte del URI de la solicitud que indica el contexto de la solicitud.

14

String getHeader(String name)

Devuelve el valor del encabezado de solicitud especificado como una cadena.

15

String getMethod()

Devuelve el nombre del método HTTP con el que se realizó esta solicitud, por ejemplo, GET, POST o PUT.

dieciséis

String getParameter(String name)

Devuelve el valor de un parámetro de solicitud como una cadena, o nulo si el parámetro no existe.

17

String getPathInfo()

Devuelve cualquier información de ruta adicional asociada con la URL que envió el cliente cuando realizó esta solicitud.

18

String getProtocol()

Devuelve el nombre y la versión del protocolo que usa la solicitud.

19

String getQueryString()

Devuelve la cadena de consulta que está contenida en la URL de la solicitud después de la ruta.

20

String getRemoteAddr()

Devuelve la dirección de Protocolo de Internet (IP) del cliente que envió la solicitud.

21

String getRemoteHost()

Devuelve el nombre completo del cliente que envió la solicitud.

22

String getRemoteUser()

Devuelve el inicio de sesión del usuario que realiza esta solicitud, si el usuario ha sido autenticado, o nulo si el usuario no ha sido autenticado.

23

String getRequestURI()

Devuelve la parte de la URL de esta solicitud desde el nombre del protocolo hasta la cadena de consulta en la primera línea de la solicitud HTTP.

24

String getRequestedSessionId()

Devuelve el ID de sesión especificado por el cliente.

25

String getServletPath()

Devuelve la parte de la URL de esta solicitud que llama al JSP.

26

String[] getParameterValues(String name)

Devuelve una matriz de objetos String que contiene todos los valores que tiene el parámetro de solicitud dado, o nulo si el parámetro no existe.

27

boolean isSecure()

Devuelve un valor booleano que indica si esta solicitud se realizó mediante un canal seguro, como HTTPS.

28

int getContentLength()

Devuelve la longitud, en bytes, del cuerpo de la solicitud y la pone a disposición el flujo de entrada, o -1 si no se conoce la longitud.

29

int getIntHeader(String name)

Devuelve el valor del encabezado de solicitud especificado como un int.

30

int getServerPort()

Devuelve el número de puerto en el que se recibió esta solicitud.

Ejemplo de solicitud de encabezado HTTP

A continuación se muestra el ejemplo que utiliza getHeaderNames() método de HttpServletRequestpara leer la información del encabezado HTTP. Este método devuelve una enumeración que contiene la información del encabezado asociada con la solicitud HTTP actual.

Una vez que tenemos una enumeración, podemos recorrer la enumeración de la manera estándar. Usaremos elhasMoreElements() método para determinar cuándo detenerse y el nextElement() método para obtener el nombre de cada parámetro.

<%@ page import = "java.io.*,java.util.*" %>

<html>
   <head>
      <title>HTTP Header Request Example</title>
   </head>

   <body>
      <center>
         <h2>HTTP Header Request Example</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>
      </center>
   
   </body>
</html>

Pongamos ahora el código anterior en main.jsp e intenta acceder a él.

Ejemplo de solicitud de encabezado HTTP

Nombre del encabezado Valor (es) de encabezado
aceptar * / *
aceptar-idioma en-nosotros
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 localhost: 8080
conexión Mantener viva
control de caché sin caché

Puede intentar trabajar en todos los métodos de forma similar.