English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Como se discutió en los capítulos anteriores, cuando un servidor web responde a una solicitud HTTP, la respuesta generalmente incluye una línea de estado, algunas cabeceras de respuesta, una línea en blanco y el documento. Un ejemplo típico de respuesta es el siguiente:
HTTP/1La tabla a continuación resume los más útiles HTTP desde el servidor web hasta el navegador:1 200 OK Content-text/Type: ... html2Encabezado <body> : ... HeaderN: ... (Línea en blanco) <!doctype ...> <html>/<head>... head> <body> </... </body>
html>/1La tabla a continuación resume los más útiles HTTP desde el servidor web hasta el navegador:1La línea de estado incluye la versión de HTTP (en este ejemplo, HTTP 2)、un código de estado (en este ejemplo,
(00) y un mensaje corto correspondiente al código de estado (en este ejemplo, OK). 1La tabla a continuación resume los más útiles HTTP desde el servidor web hasta el navegador:1 .
Encabezado de respuesta, que utilizará con frecuencia en programación web: | Encabezado |
---|---|
Descripción | Allow |
Esta información de encabezado especifica los métodos de solicitud que admite el servidor (GET, POST, etc.).-Cache | ControlEsta información de encabezado especifica en qué condiciones el documento de respuesta puede almacenarse en caché de manera segura. Los valores posibles son: public, private o-no Public significa que el documento es cachable, Private significa que el documento es un documento de uso privado de un solo usuario y debe almacenarse solo en caché privada (no compartida), no-cache significa que el documento no debe almacenarse en caché. |
Connection | Esta información de encabezado indica si el navegador utiliza una conexión HTTP persistente. Valor close indica que el navegador no utiliza una conexión HTTP persistente, valor keep-alive significa que se utiliza una conexión persistente. |
Content-Disposition | Esta información de encabezado permite al navegador solicitar al usuario que guarde la respuesta en disco con el nombre dado. |
Content-Encoding | Durante la transmisión, esta información de encabezado especifica el modo de codificación de la página. |
Content-Language | Esta información de encabezado indica el idioma utilizado para escribir el documento. Por ejemplo, en, en-us, ru, etc. |
Content-Length | Esta información de encabezado indica el número de bytes en la respuesta. Sólo cuando el navegador utiliza una conexión persistente (keep-alive)-sólo es necesario esta información en conexiones HTTP activas (keep-alive). |
Content-Type | Esta información de encabezado proporciona el tipo MIME (Multipurpose Internet Mail Extension) del documento de respuesta. |
Expires | Esta información de encabezado especifica el tiempo de expiración del contenido, después del cual el contenido ya no se almacenará en caché. |
Last-Modified | Esta información de encabezado indica la última modificación del documento. Luego, el cliente puede cachear el archivo y, en futuras solicitudes, puede hacerlo a través de Si-Modified-Desde La información de encabezado de solicitud proporciona una fecha. |
Location | Esta información de encabezado debe incluirse en todas las respuestas con códigos de estado. En 3Dentro de 00s, esto notificará al navegador la dirección del documento. El navegador se conectará automáticamente a esta ubicación y obtendrá el nuevo documento. |
Refresh | Esta información de encabezado especifica cómo el navegador debe solicitar rápidamente la página actualizada. Puede especificar el número de segundos para refrescar la página. |
Retry-After | Esta información de encabezado puede usarse con 503Usado junto con el código de respuesta (Service Unavailable - Servicio no disponible), esto informará al cliente cuánto tiempo puede repetir su solicitud. |
Set-Cookie | Esta información de encabezado especifica un cookie asociado con la página. |
Los siguientes métodos se pueden usar para configurar encabezados de respuesta HTTP en programas Servlet. Estos métodos a través de HttpServletResponse Objeto disponible.
Número de orden | Método & Descripción |
---|---|
1 | String encodeRedirectURL(String url) Codificar la URL especificada para el método sendRedirect, o si la codificación no es necesaria, devolver la URL sin cambios. |
2 | String encodeURL(String url) Codificar la URL especificada que contiene el ID de sesión de la sesión, o si la codificación no es necesaria, devolver la URL sin cambios. |
3 | boolean containsHeader(String name) Devolver un valor booleano que indique si se ha configurado el encabezado de respuesta nombrado. |
4 | boolean isCommitted() Devolver un valor booleano que indique si la respuesta ya se ha comprometido. |
5 | void addCookie(Cookie cookie) Agregar el cookie especificado a la respuesta. |
6 | void addDateHeader(String name, long date) Agregar un encabezado de respuesta con un nombre y valor de fecha dados. |
7 | void addHeader(String name, String value) Agregar un encabezado de respuesta con un nombre y valor dados. |
8 | void addIntHeader(String name, int value) Agregar un encabezado de respuesta con un nombre y valor enteros dados. |
9 | void flushBuffer() Forzar que cualquier contenido en el búfer se escriba en el cliente. |
10 | void reset() Limpiar cualquier dato existente en el búfer, incluyendo el código de estado y los encabezados. |
11 | void resetBuffer() Limpiar el contenido del búfer base de la respuesta, sin limpiar el código de estado y los encabezados. |
12 | void sendError(int sc) 使用指定的状态码发送错误响应到客户端,并清除缓冲区。 |
13 | void sendError(int sc, String msg) 使用指定的状态发送错误响应到客户端。 |
14 | void sendRedirect(String location) 使用指定的重定向位置 URL 发送临时重定向响应到客户端。 |
15 | void setBufferSize(int size) 为响应主体设置首选的缓冲区大小。 |
16 | void setCharacterEncoding(String charset) 设置被发送到客户端的响应的字符编码(MIME 字符集)例如,UTF-8。 |
17 | void setContentLength(int len) 设置在 HTTP Servlet 响应中的内容主体的长度,该方法设置 HTTP Content-Length 头。 |
18 | void setContentType(String type) 如果响应还未被提交,设置被发送到客户端的响应的内容类型。 |
19 | void setDateHeader(String name, long date) 设置一个带有给定的名称和日期值的响应报头。 |
20 | void setHeader(String name, String value) 设置一个带有给定的名称和值的响应报头。 |
21 | void setIntHeader(String name, int value) 设置一个带有给定的名称和整数值的响应报头。 |
22 | void setLocale(Locale loc) 如果响应还未被提交,设置响应的区域。 |
23 | void setStatus(int sc) 为该响应设置状态码。 |
您已经在前面的示例中看到 setContentType() 方法,下面的示例也使用了同样的方法,此外,我们会用 setIntHeader() 方法来设置 Refresh 头。
//导入必需的 java 库 import java.io.IOException; import java.io.PrintWriter; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @WebServlet("/Refresh") //extender la clase HttpServlet public class Refresh extends HttpServlet { // método para manejar solicitudes GET public void doGet(HttpServletRequest request, HttpServletResponse response) lanza ServletException, IOException { // establecer el tiempo de recarga automática 5 segundos response.setIntHeader("Refresh", 5); // establecer el tipo de contenido de la respuesta response.setContentType("text/html;charset=UTF-8"; //obtener un calendario con la zona horaria predeterminada y el ambiente de idioma Calendar cale = Calendar.getInstance(); //conversión de tipo Calendar a Date Date tasktime=cale.getTime(); //establecer el formato de salida de fechas SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); //formateo de salida String nowTime = df.format(tasktime); PrintWriter out = response.getWriter(); String title = "auto-refrescante Header configuración" - 基础教程网示例"; String docType = "<!DOCTYPE html>\n"; out.println(docType + "<html>\n" + "<head><title>" + title + "</title></head>\n"+ "<body bgcolor=\"#f0f0f0\">\n" + "<h1 align="center">" + title + "</h1>\n" + "<p>La hora actual es:" + nowTime + "</p>\n"); } // método para manejar solicitudes de método POST public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } }
El siguiente ejemplo de prueba está ubicado en el proyecto TomcatTest, la configuración de web.xml correspondiente es la siguiente:
<?xml version="1.0" encoding="UTF-8"?> <web-app> <servlet <!-- Nombre de la clase --> <servlet-name>Refresh</servlet-name> <!-- paquete en el que se encuentra --> <servlet-class>com.w3codebox.test.Refresh</servlet-class> </servlet> <servlet-mapping> <servlet-name>Refresh</servlet-name> <!-- Sitio web visitado --> <url-pattern>/TomcatTest/Refresh</url-pattern> </servlet-mapping> </web-app>
Ahora, llama al Servlet superior, cada 5 Los segundos mostrarán la hora actual del sistema. Tan solo ejecuta Servlet y espera un momento, verás el siguiente resultado: