JSP - Respuesta del servidor

En este capítulo, analizaremos la respuesta del servidor en JSP. Cuando un servidor web responde a una solicitud HTTP, la respuesta generalmente consta de una línea de estado, algunos encabezados de respuesta, una línea en blanco y el documento. Una respuesta típica se ve así:

HTTP/1.1 200 OK
Content-Type: text/html
Header2: ...
...
HeaderN: ...
   (Blank Line)
<!doctype ...>

<html>
   <head>...</head>
   <body>
      ...
   </body>
</html>

La línea de estado consta de la versión HTTP (HTTP/1.1 in the example), un código de estado (200 in the example), y un mensaje muy breve correspondiente al código de estado (OK in the example).

A continuación se muestra un resumen de los encabezados de respuesta HTTP 1.1 más útiles que regresan al navegador desde el servidor web. Estos encabezados se utilizan con frecuencia en la programación web:

S.No. Encabezado y descripción
1

Allow

Este encabezado especifica los métodos de solicitud (GET, POST, etc.) que admite el servidor.

2

Cache-Control

Este encabezado especifica las circunstancias en las que el documento de respuesta se puede almacenar en caché de forma segura. Puede tener valorespublic, private o no-cache etc. Público significa que el documento se puede almacenar en caché, Privado significa que el documento es para un solo usuario y solo se puede almacenar en cachés privados (no compartidos) y sin caché significa que el documento nunca debe almacenarse en caché.

3

Connection

Este encabezado indica al navegador si debe utilizar conexiones HTTP persistentes o no. Un valor declose indica al navegador que no utilice conexiones HTTP persistentes y keep-alive significa usar conexiones persistentes.

4

Content-Disposition

Este encabezado le permite solicitar que el navegador le pida al usuario que guarde la respuesta en el disco en un archivo con el nombre dado.

5

Content-Encoding

Este encabezado especifica la forma en que se codificó la página durante la transmisión.

6

Content-Language

Este encabezado significa el idioma en el que está escrito el documento. Por ejemplo,en, en-us, ru, etc.

7

Content-Length

Este encabezado indica el número de bytes en la respuesta. Esta información es necesaria solo si el navegador está utilizando una conexión HTTP persistente (mantener viva).

8

Content-Type

Este encabezado da el MIME (Multipurpose Internet Mail Extension) tipo de documento de respuesta.

9

Expires

Este encabezado especifica el momento en el que el contenido debe considerarse desactualizado y, por lo tanto, ya no se debe almacenar en caché.

10

Last-Modified

Este encabezado indica cuándo se modificó por última vez el documento. Luego, el cliente puede almacenar en caché el documento y proporcionar una fechaIf-Modified-Since encabezado de solicitud en solicitudes posteriores.

11

Location

Este encabezado debe incluirse con todas las respuestas que tengan un código de estado en los 300. Esto notifica al navegador de la dirección del documento. El navegador se vuelve a conectar automáticamente a esta ubicación y recupera el nuevo documento.

12

Refresh

Este encabezado especifica qué tan pronto el navegador debe solicitar una página actualizada. Puede especificar el tiempo en segundos después del cual se actualizará una página.

13

Retry-After

Este encabezado se puede utilizar junto con un 503 (Service Unavailable) respuesta para decirle al cliente qué tan pronto puede repetir su solicitud.

14

Set-Cookie

Este encabezado especifica una cookie asociada con la página.

El objeto HttpServletResponse

El objeto de respuesta es una instancia de un javax.servlet.http.HttpServletResponse object. Así como el servidor crea el objeto de solicitud, también crea un objeto para representar la respuesta al cliente.

El objeto de respuesta también define las interfaces que se ocupan de la creación de nuevos encabezados HTTP. A través de este objeto, el programador JSP puede agregar nuevas cookies o sellos de fecha, códigos de estado HTTP, etc.

Los siguientes métodos se pueden utilizar para configurar el encabezado de respuesta HTTP en su programa de servlet. Estos métodos están disponibles con el objeto HttpServletResponse . Este objeto representa la respuesta del servidor.

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

String encodeRedirectURL(String url)

Codifica la URL especificada para su uso en el sendRedirect o, si no se necesita codificación, devuelve la URL sin cambios.

2

String encodeURL(String url)

Codifica la URL especificada al incluir la ID de sesión en ella o, si no se necesita codificación, devuelve la URL sin cambios.

3

boolean containsHeader(String name)

Devuelve un valor booleano que indica si el encabezado de respuesta con nombre ya se ha establecido.

4

boolean isCommitted()

Devuelve un booleano que indica si la respuesta se ha confirmado.

5

void addCookie(Cookie cookie)

Agrega la cookie especificada a la respuesta.

6

void addDateHeader(String name, long date)

Agrega un encabezado de respuesta con el nombre dado y el valor de la fecha.

7

void addHeader(String name, String value)

Agrega un encabezado de respuesta con el nombre y el valor proporcionados.

8

void addIntHeader(String name, int value)

Agrega un encabezado de respuesta con el nombre dado y el valor entero.

9

void flushBuffer()

Obliga a que cualquier contenido del búfer se escriba en el cliente.

10

void reset()

Borra todos los datos que existen en el búfer, así como el código de estado y los encabezados.

11

void resetBuffer()

Borra el contenido del búfer subyacente en la respuesta sin borrar los encabezados ni el código de estado.

12

void sendError(int sc)

Envía una respuesta de error al cliente utilizando el código de estado especificado y limpiando el búfer.

13

void sendError(int sc, String msg)

Envía una respuesta de error al cliente utilizando el estado especificado.

14

void sendRedirect(String location)

Envía una respuesta de redireccionamiento temporal al cliente mediante la URL de ubicación de redireccionamiento especificada.

15

void setBufferSize(int size)

Establece el tamaño de búfer preferido para el cuerpo de la respuesta.

dieciséis

void setCharacterEncoding(String charset)

Establece la codificación de caracteres (juego de caracteres MIME) de la respuesta que se envía al cliente, por ejemplo, en UTF-8.

17

void setContentLength(int len)

Establece la longitud del cuerpo del contenido en la respuesta En servlets HTTP; este método también establece el encabezado HTTP Content-Length.

18

void setContentType(String type)

Establece el tipo de contenido de la respuesta que se envía al cliente, si la respuesta aún no se ha confirmado.

19

void setDateHeader(String name, long date)

Establece un encabezado de respuesta con el nombre dado y el valor de fecha.

20

void setHeader(String name, String value)

Establece un encabezado de respuesta con el nombre y el valor proporcionados.

21

void setIntHeader(String name, int value)

Establece un encabezado de respuesta con el nombre dado y el valor entero.

22

void setLocale(Locale loc)

Establece la configuración regional de la respuesta, si la respuesta aún no se ha confirmado.

23

void setStatus(int sc)

Establece el código de estado para esta respuesta.

Ejemplo de respuesta de encabezado HTTP

El siguiente ejemplo usaría setIntHeader() método para configurar Refresh encabezado para simular un reloj digital -

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

<html>
   
   <head>
      <title>Auto Refresh Header Example</title>
   </head>
   
   <body>
      <center>
         <h2>Auto Refresh Header Example</h2>
         <%
            // Set refresh, autoload time as 5 seconds
            response.setIntHeader("Refresh", 5);
            
            // Get current time
            Calendar calendar = new GregorianCalendar();
            
            String am_pm;
            int hour = calendar.get(Calendar.HOUR);
            int minute = calendar.get(Calendar.MINUTE);
            int second = calendar.get(Calendar.SECOND);
            
            if(calendar.get(Calendar.AM_PM) == 0) 
               am_pm = "AM";
            else
               am_pm = "PM";
               String CT = hour+":"+ minute +":"+ second +" "+ am_pm;
               out.println("Current Time is: " + CT + "\n");
         %>
      </center>
   
   </body>
</html>

Ahora ponga el código anterior en main.jspe intenta acceder a él. Esto mostrará la hora actual del sistema después de cada 5 segundos de la siguiente manera. Ejecute JSP. Recibirá el siguiente resultado: -

Auto Refresh Header Example

Current Time is: 9:44:50 PM

Puede intentar trabajar con los otros métodos de manera similar.