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.