JSP - Resposta do Servidor
Neste capítulo, discutiremos a resposta do servidor em JSP. Quando um servidor Web responde a uma solicitação HTTP, a resposta geralmente consiste em uma linha de status, alguns cabeçalhos de resposta, uma linha em branco e o documento. Uma resposta típica é semelhante a esta -
HTTP/1.1 200 OK
Content-Type: text/html
Header2: ...
...
HeaderN: ...
(Blank Line)
<!doctype ...>
<html>
<head>...</head>
<body>
...
</body>
</html>
A linha de status consiste na versão HTTP (HTTP/1.1 in the example), um código de status (200 in the example), e uma mensagem muito curta correspondente ao código de status (OK in the example).
A seguir está um resumo dos cabeçalhos de resposta HTTP 1.1 mais úteis que voltam para o navegador do servidor da web. Esses cabeçalhos são freqüentemente usados em programação web -
S.No. | Cabeçalho e Descrição |
---|---|
1 | Allow Este cabeçalho especifica os métodos de solicitação (GET, POST, etc.) que o servidor suporta. |
2 | Cache-Control Este cabeçalho especifica as circunstâncias nas quais o documento de resposta pode ser armazenado em cache com segurança. Pode ter valorespublic, private ou no-cache etc. Público significa que o documento pode ser armazenado em cache, Privado significa que o documento é para um único usuário e só pode ser armazenado em caches privados (não compartilhados) e sem cache significa que o documento nunca deve ser armazenado em cache. |
3 | Connection Este cabeçalho instrui o navegador se deve usar conexões HTTP persistentes ou não. Um valor declose instrui o navegador a não usar conexões HTTP persistentes e keep-alive significa usar conexões persistentes. |
4 | Content-Disposition Este cabeçalho permite solicitar que o navegador peça ao usuário para salvar a resposta no disco em um arquivo com o nome fornecido. |
5 | Content-Encoding Este cabeçalho especifica a maneira como a página foi codificada durante a transmissão. |
6 | Content-Language Este cabeçalho indica o idioma no qual o documento foi escrito. Por exemplo,en, en-us, ru, etc. |
7 | Content-Length Este cabeçalho indica o número de bytes na resposta. Essas informações são necessárias apenas se o navegador estiver usando uma conexão HTTP persistente (keep-alive). |
8 | Content-Type Este cabeçalho dá o MIME (Multipurpose Internet Mail Extension) tipo de documento de resposta. |
9 | Expires Este cabeçalho especifica a hora em que o conteúdo deve ser considerado desatualizado e, portanto, não mais ser armazenado em cache. |
10 | Last-Modified Este cabeçalho indica quando o documento foi alterado pela última vez. O cliente pode então armazenar em cache o documento e fornecer uma data por umIf-Modified-Since cabeçalho da solicitação em solicitações posteriores. |
11 | Location Esse cabeçalho deve ser incluído em todas as respostas que possuem um código de status na casa dos 300s. Isso notifica o navegador do endereço do documento. O navegador se reconecta automaticamente a este local e recupera o novo documento. |
12 | Refresh Este cabeçalho especifica em quanto tempo o navegador deve solicitar uma página atualizada. Você pode especificar o tempo em segundos após o qual uma página seria atualizada. |
13 | Retry-After Este cabeçalho pode ser usado em conjunto com um 503 (Service Unavailable) resposta para dizer ao cliente quando ele pode repetir sua solicitação. |
14 | Set-Cookie Este cabeçalho especifica um cookie associado à página. |
O objeto HttpServletResponse
O objeto de resposta é uma instância de um javax.servlet.http.HttpServletResponse object. Assim como o servidor cria o objeto de solicitação, ele também cria um objeto para representar a resposta ao cliente.
O objeto de resposta também define as interfaces que lidam com a criação de novos cabeçalhos HTTP. Por meio deste objeto, o programador JSP pode adicionar novos cookies ou carimbos de data, códigos de status HTTP etc.
Os métodos a seguir podem ser usados para definir o cabeçalho de resposta HTTP em seu programa de servlet. Esses métodos estão disponíveis com o objeto HttpServletResponse . Este objeto representa a resposta do servidor.
S.No. | Método e Descrição |
---|---|
1 | String encodeRedirectURL(String url) Codifica o URL especificado para uso no sendRedirect ou, se a codificação não for necessária, retorna o URL inalterado. |
2 | String encodeURL(String url) Codifica o URL especificado incluindo o ID da sessão nele ou, se a codificação não for necessária, retorna o URL inalterado. |
3 | boolean containsHeader(String name) Retorna um booleano indicando se o cabeçalho de resposta nomeado já foi definido. |
4 | boolean isCommitted() Retorna um booleano indicando se a resposta foi confirmada. |
5 | void addCookie(Cookie cookie) Adiciona o cookie especificado à resposta. |
6 | void addDateHeader(String name, long date) Adiciona um cabeçalho de resposta com o nome e valor de data fornecidos. |
7 | void addHeader(String name, String value) Adiciona um cabeçalho de resposta com o nome e valor fornecidos. |
8 | void addIntHeader(String name, int value) Adiciona um cabeçalho de resposta com o nome e valor inteiro fornecidos. |
9 | void flushBuffer() Força qualquer conteúdo do buffer a ser gravado no cliente. |
10 | void reset() Limpa todos os dados existentes no buffer, bem como o código de status e cabeçalhos. |
11 | void resetBuffer() Limpa o conteúdo do buffer subjacente na resposta sem limpar cabeçalhos ou código de status. |
12 | void sendError(int sc) Envia uma resposta de erro ao cliente usando o código de status especificado e limpando o buffer. |
13 | void sendError(int sc, String msg) Envia uma resposta de erro ao cliente usando o status especificado. |
14 | void sendRedirect(String location) Envia uma resposta de redirecionamento temporária ao cliente usando o URL do local de redirecionamento especificado. |
15 | void setBufferSize(int size) Define o tamanho do buffer preferido para o corpo da resposta. |
16 | void setCharacterEncoding(String charset) Define a codificação de caracteres (conjunto de caracteres MIME) da resposta que está sendo enviada ao cliente, por exemplo, para UTF-8. |
17 | void setContentLength(int len) Define o comprimento do corpo do conteúdo na resposta Em servlets HTTP; este método também define o cabeçalho HTTP Content-Length. |
18 | void setContentType(String type) Define o tipo de conteúdo da resposta que está sendo enviada ao cliente, se a resposta ainda não foi confirmada. |
19 | void setDateHeader(String name, long date) Define um cabeçalho de resposta com o nome e valor de data fornecidos. |
20 | void setHeader(String name, String value) Define um cabeçalho de resposta com o nome e valor fornecidos. |
21 | void setIntHeader(String name, int value) Define um cabeçalho de resposta com o nome e valor inteiro fornecidos. |
22 | void setLocale(Locale loc) Define a localidade da resposta, se a resposta ainda não foi confirmada. |
23 | void setStatus(int sc) Define o código de status para esta resposta. |
Exemplo de resposta de cabeçalho HTTP
O exemplo a seguir usaria setIntHeader() método para definir Refresh cabeçalho para simular um relógio 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>
Agora coloque o código acima em main.jspe tente acessá-lo. Isso exibirá a hora atual do sistema a cada 5 segundos, conforme a seguir. Execute o JSP. Você receberá a seguinte saída: -
Auto Refresh Header Example
Current Time is: 9:44:50 PM
Você pode tentar trabalhar com os outros métodos de maneira semelhante.