Servlets - solicitação de HTTP do cliente

Quando um navegador solicita uma página da web, ele envia muitas informações ao servidor da web que não podem ser lidas diretamente porque essas informações viajam como parte do cabeçalho da solicitação HTTP. Você pode verificar o protocolo HTTP para obter mais informações sobre isso.

A seguir estão as informações importantes do cabeçalho que vêm do lado do navegador e você usaria com muita frequência na programação da web

Sr. Não. Cabeçalho e Descrição
1

Accept

Este cabeçalho especifica os tipos MIME que o navegador ou outros clientes podem manipular. Valores deimage/png ou image/jpeg são as duas possibilidades mais comuns.

2

Accept-Charset

Este cabeçalho especifica os conjuntos de caracteres que o navegador pode usar para exibir as informações. Por exemplo ISO-8859-1.

3

Accept-Encoding

Este cabeçalho especifica os tipos de codificação que o navegador sabe como lidar. Valores degzip ou compress são as duas possibilidades mais comuns.

4

Accept-Language

Este cabeçalho especifica os idiomas preferidos do cliente, caso o servlet possa produzir resultados em mais de um idioma. Por exemplo en, en-us, ru, etc

5

Authorization

Esse cabeçalho é usado pelos clientes para se identificarem ao acessar páginas da Web protegidas por senha.

6

Connection

Este cabeçalho indica se o cliente pode lidar com conexões HTTP persistentes. As conexões persistentes permitem que o cliente ou outro navegador recupere vários arquivos com uma única solicitação. Um valor deKeep-Alive significa que conexões persistentes devem ser usadas.

7

Content-Length

Este cabeçalho é aplicável apenas a solicitações POST e fornece o tamanho dos dados POST em bytes.

8

Cookie

Este cabeçalho retorna cookies aos servidores que os enviaram anteriormente ao navegador.

9

Host

Este cabeçalho especifica o host e a porta conforme fornecidos no URL original.

10

If-Modified-Since

Este cabeçalho indica que o cliente deseja a página apenas se ela tiver sido alterada após a data especificada. O servidor envia um código 304, o que significaNot Modified cabeçalho se nenhum resultado mais recente estiver disponível.

11

If-Unmodified-Since

Este cabeçalho é o reverso de If-Modified-Since; ele especifica que a operação deve ser bem-sucedida apenas se o documento for mais antigo que a data especificada.

12

Referer

Este cabeçalho indica o URL da página da Web de referência. Por exemplo, se você estiver na página 1 da Web e clicar em um link para a página 2 da Web, o URL da página 1 da Web será incluído no cabeçalho Referrer quando o navegador solicitar a página 2 da Web.

13

User-Agent

Este cabeçalho identifica o navegador ou outro cliente que está fazendo a solicitação e pode ser usado para retornar conteúdo diferente para diferentes tipos de navegadores.

Métodos para ler o cabeçalho HTTP

Existem métodos a seguir que podem ser usados ​​para ler o cabeçalho HTTP em seu programa de servlet. Esses métodos estão disponíveis com o objeto HttpServletRequest

Sr. Não. Método e Descrição
1

Cookie[] getCookies()

Retorna uma matriz contendo todos os objetos Cookie que o cliente enviou com esta solicitação.

2

Enumeration getAttributeNames()

Retorna uma Enumeração contendo os nomes dos atributos disponíveis para esta solicitação.

3

Enumeration getHeaderNames()

Retorna uma enumeração de todos os nomes de cabeçalho que esta solicitação contém.

4

Enumeration getParameterNames()

Retorna uma Enumeração de objetos String contendo os nomes dos parâmetros contidos nesta solicitação

5

HttpSession getSession()

Retorna a sessão atual associada a esta solicitação ou, se a solicitação não tiver uma sessão, cria uma.

6

HttpSession getSession(boolean create)

Retorna a HttpSession atual associada a esta solicitação ou, se não houver sessão atual e o valor de criar for verdadeiro, retorna uma nova sessão.

7

Locale getLocale()

Retorna o Locale preferido no qual o cliente aceitará o conteúdo, com base no cabeçalho Accept-Language.

8

Object getAttribute(String name)

Retorna o valor do atributo nomeado como um Objeto ou nulo se nenhum atributo com o nome fornecido existir.

9

ServletInputStream getInputStream()

Recupera o corpo da solicitação como dados binários usando um ServletInputStream.

10

String getAuthType()

Retorna o nome do esquema de autenticação usado para proteger o servlet, por exemplo, "BASIC" ou "SSL", ou nulo se o JSP não estiver protegido.

11

String getCharacterEncoding()

Retorna o nome da codificação de caracteres usada no corpo desta solicitação.

12

String getContentType()

Retorna o tipo MIME do corpo da solicitação ou nulo se o tipo não for conhecido.

13

String getContextPath()

Retorna a parte do URI da solicitação que indica o contexto da solicitação.

14

String getHeader(String name)

Retorna o valor do cabeçalho da solicitação especificada como uma String.

15

String getMethod()

Retorna o nome do método HTTP com o qual esta solicitação foi feita, por exemplo, GET, POST ou PUT.

16

String getParameter(String name)

Retorna o valor de um parâmetro de solicitação como String ou null se o parâmetro não existe.

17

String getPathInfo()

Retorna qualquer informação de caminho extra associada ao URL que o cliente enviou quando fez esta solicitação

18

String getProtocol()

Retorna o nome e a versão do protocolo da solicitação.

19

String getQueryString()

Retorna a string de consulta contida no URL da solicitação após o caminho.

20

String getRemoteAddr()

Retorna o endereço de protocolo da Internet (IP) do cliente que enviou a solicitação.

21

String getRemoteHost()

Retorna o nome totalmente qualificado do cliente que enviou a solicitação.

22

String getRemoteUser()

Retorna o login do usuário que fez a solicitação, se o usuário foi autenticado, ou nulo, se o usuário não foi autenticado.

23

String getRequestURI()

Retorna a parte do URL desta solicitação do nome do protocolo até a string de consulta na primeira linha da solicitação HTTP.

24

String getRequestedSessionId()

Retorna o ID da sessão especificado pelo cliente.

25

String getServletPath()

Retorna a parte da URL desta solicitação que chama o JSP.

26

String[] getParameterValues(String name)

Retorna uma matriz de objetos String contendo todos os valores do parâmetro de solicitação fornecido ou nulo se o parâmetro não existir.

27

boolean isSecure()

Retorna um booleano indicando se esta solicitação foi feita usando um canal seguro, como HTTPS.

28

int getContentLength()

Retorna o comprimento, em bytes, do corpo da solicitação e disponibilizado pelo fluxo de entrada, ou -1 se o comprimento não for conhecido.

29

int getIntHeader(String name)

Retorna o valor do cabeçalho da solicitação especificada como um int.

30

int getServerPort()

Retorna o número da porta na qual esta solicitação foi recebida.

Exemplo de solicitação de cabeçalho HTTP

A seguir está o exemplo que usa getHeaderNames()método de HttpServletRequest para ler as informações do cabeçalho HTTP. Este método retorna uma Enumeration que contém as informações do cabeçalho associadas à solicitação HTTP atual.

Assim que tivermos uma Enumeração, podemos fazer um loop down da Enumeração da maneira padrão, usando o método hasMoreElements () para determinar quando parar e usando o método nextElement () para obter cada nome de parâmetro

// Import required java libraries
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.util.*;
 
// Extend HttpServlet class
public class DisplayHeader extends HttpServlet {
 
   // Method to handle GET method request.
   public void doGet(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException {
      
      // Set response content type
      response.setContentType("text/html");
 
      PrintWriter out = response.getWriter();
      String title = "HTTP Header Request Example";
      String docType =
         "<!doctype html public \"-//w3c//dtd html 4.0 " + "transitional//en\">\n";

      out.println(docType +
         "<html>\n" +
         "<head><title>" + title + "</title></head>\n"+
         "<body bgcolor = \"#f0f0f0\">\n" +
         "<h1 align = \"center\">" + title + "</h1>\n" +
         "<table width = \"100%\" border = \"1\" align = \"center\">\n" +
         "<tr bgcolor = \"#949494\">\n" +
         "<th>Header Name</th><th>Header Value(s)</th>\n"+
         "</tr>\n"
      );
 
      Enumeration headerNames = request.getHeaderNames();
    
      while(headerNames.hasMoreElements()) {
         String paramName = (String)headerNames.nextElement();
         out.print("<tr><td>" + paramName + "</td>\n");
         String paramValue = request.getHeader(paramName);
         out.println("<td> " + paramValue + "</td></tr>\n");
      }
      out.println("</table>\n</body></html>");
   }
   
   // Method to handle POST method request.
   public void doPost(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException {

      doGet(request, response);
   }
}

Agora, chamar o servlet acima geraria o seguinte resultado -

HTTP Header Request Example

Header Name Header Value(s)
accept */*
accept-language en-us
user-agent Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; InfoPath.2; MS-RTC LM 8)
accept-encoding gzip, deflate
host localhost:8080
connection Keep-Alive
cache-control no-cache