English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Como discutido nos capítulos anteriores, quando um servidor web responde a um pedido HTTP, a resposta geralmente inclui uma linha de estado, alguns cabeçalhos de resposta, uma linha em branco e o documento. Uma resposta típica é como segue:
HTTP/1A tabela a seguir resume os mais úteis HTTP1 200 OK Content-Type: text/Type: text html2Header <body> : ... HeaderN: ... (Linha em branco) <!doctype ...> <html>/<head>... head> <body> </... </body>
html>/1A tabela a seguir resume os mais úteis HTTP1linha de status inclui a versão HTTP (no exemplo, HTTP 2)、um código de status (no exemplo,
00) e uma mensagem curta correspondente ao código de status (no exemplo, OK). 1A tabela a seguir resume os mais úteis HTTP1 .
Os cabeçalhos de resposta, que você usará frequentemente em programação web: | cabeçalhos |
---|---|
Descrição | Allow |
Este cabeçalho especifica os métodos de solicitação suportados pelo servidor (GET, POST, etc.).-Cache | ControlEste cabeçalho especifica em que condições o documento de resposta pode ser armazenado em cache de forma segura. Valores possíveis incluem: public, private ou-no etc. Public significa que o documento é cacheável, Private significa que o documento é um documento de uso privado de um único usuário e pode ser armazenado apenas em cache privado (não compartilhado), no-cache significa que o documento não deve ser armazenado em cache. |
Connection | Este cabeçalho indica se o navegador deve usar conexão HTTP persistente. Valor close indica que o navegador não deve usar conexão HTTP persistente, valor keep-alive significa que usa conexão persistente. |
Content-Disposition | Este cabeçalho permite que você peça ao navegador para salvar a resposta em disco com o nome dado. |
Content-Encoding | Durante a transmissão, este cabeçalho especifica o modo de codificação da página. |
Content-Language | Este cabeçalho representa o idioma usado para escrever o documento. Por exemplo, en, en-us, ru e outros. |
Content-Length | Este cabeçalho indica o número de bytes na resposta. Apenas quando o navegador usar conexão persistente (keep-apenas em conexões HTTP ativas (keep-alive). |
Content-Type | Este cabeçalho fornece o tipo MIME (Multipurpose Internet Mail Extension) do documento de resposta. |
Expires | Este cabeçalho especifica o tempo de expiração do conteúdo, após o qual o conteúdo não é mais armazenado em cache. |
Last-Modified | Este cabeçalho indica o horário da última modificação do documento. Em seguida, o cliente pode armazenar o arquivo em cache e, em futuras solicitações, passar Se-Modified-Desde Os cabeçalhos de solicitação fornecem uma data. |
Location | Esta informação de cabeçalho deve ser incluída em todas as respostas com código de status. Em 3Dentro de 00s, isso notifica o navegador do endereço do documento. O navegador se reconnectará automaticamente a essa posição e obtendrá o novo documento. |
Refresh | Este cabeçalho informa como o navegador deve solicitar a atualização da página o mais rápido possível. Você pode especificar o número de segundos para atualizar a página. |
Retry-After | Este cabeçalho pode ser usado em conjunto com 503Usado em combinação com o código de resposta (Service Unavailable - Serviço Indisponível), que informa ao cliente quanto tempo pode passar antes de repetir sua solicitação. |
Set-Cookie | Este cabeçalho informa um cookie associado à página. |
Os seguintes métodos podem ser usados para configurar cabeçalhos de resposta HTTP em programas Servlet. Esses métodos são HttpServletResponse Objeto disponível.
Número | Método & Descrição |
---|---|
1 | String encodeRedirectURL(String url) Codificar a URL especificada para uso no método sendRedirect, ou retornar a URL inalterada se a codificação não for necessária. |
2 | String encodeURL(String url) Codificar a URL especificada contendo o ID de sessão da sessão, ou retornar a URL inalterada se a codificação não for necessária. |
3 | boolean containsHeader(String name) Retornar um valor booleano que indica se já foi configurado um cabeçalho de resposta nomeado. |
4 | boolean isCommitted() Retornar um valor booleano que indica se a resposta já foi comprometida. |
5 | void addCookie(Cookie cookie) Adicionar o cookie especificado à resposta. |
6 | void addDateHeader(String name, long date) Adicionar um cabeçalho de resposta com um nome e valor de data dados. |
7 | void addHeader(String name, String value) Adicionar um cabeçalho de resposta com um nome e valor dados. |
8 | void addIntHeader(String name, int value) Adicionar um cabeçalho de resposta com um nome e valor inteiros dados. |
9 | void flushBuffer() Forçar qualquer conteúdo no buffer a ser escrito para o cliente. |
10 | void reset() Limpar todos os dados existentes no buffer, incluindo o código de status e os cabeçalhos. |
11 | void resetBuffer() Limpar o conteúdo do buffer básico da resposta, sem limpar o código de status e os cabeçalhos. |
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") //扩展 HttpServlet 类 public class Refresh extends HttpServlet { // 处理 GET 方法请求的方法 public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 设置刷新自动加载时间为 5 秒 response.setIntHeader("Refresh", 5); // 设置响应内容类型 response.setContentType("text/html;charset=UTF-8"); //使用默认时区和语言环境获得一个日历 Calendar cale = Calendar.getInstance(); //将Calendar类型转换成Date类型 Date tasktime=cale.getTime(); //设置日期输出的格式 SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); //格式化输出 String nowTime = df.format(tasktime); PrintWriter out = response.getWriter(); String title = "自动刷新 Header 设置 - 基础教程网示例"; String docType = "<!DOCTYPE html>\n"; out.println(docType + "<html>\n" + "<head><title>" + título + "</title></head>\n"+ "<body bgcolor=\"#f0f0f0\">\n" + "<h1 alinhamento="center">" + título + "</h1>\n" + "<p>Atualmente é: " + nowTime + "</p>\n"); } // método para lidar com solicitações de método POST public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } }
Os exemplos de teste acima estão localizados no projeto TomcatTest, a configuração correspondente web.xml é a seguinte:
<?xml versão="1.0" encoding="UTF-8"?> <web-app> <servlet <!-- nome da classe --> <servlet-nome>Refresh</servlet-nome> <!-- o pacote onde está --> <servlet-classe>com.w3codebox.test.Refresh</servlet-classe> </servlet> <servlet-mapeamento> <servlet-nome>Refresh</servlet-nome> <!-- endereço de acesso --> <url-padrão>/TomcatTest/Refresh</url-padrão> </servlet-mapeamento> </web-app>
Agora, chame o Servlet acima, a cada 5 Os segundos mostram o tempo atual do sistema. Basta executar o Servlet e esperar um pouco, você verá o seguinte resultado: