English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Requisição do Cliente JSP

Quando o navegador solicita uma página da web, ele envia uma série de informações que não podem ser lidas diretamente, pois essas informações são transmitidas como parte da cabeçalho de informações HTTP. Você pode consultar o protocolo HTTP para obter mais informações.

A tabela a seguir lista alguns conteúdos importantes de cabeçalhos de informações do navegador, que serão vistos frequentemente na programação de rede futura:

InformaçõesDescrição
Accept Especifica os tipos MIME que o navegador ou outro cliente pode manipular. Seu valor geralmente é image/png ou image/jpeg
Accept-Charset Especifica o conjunto de caracteres que o navegador deve usar. Por exemplo, ISO-8859-1
Accept-Encoding Especifica o tipo de codificação. Seu valor geralmente é gzip oucompress
Accept-Language Especifica o idioma preferido do cliente, o servlet retornará preferencialmente conjuntos de resultados compostos pelo idioma atual, se o servlet suportar esse idioma. Por exemplo, en, en-us, ru etc.
Authorization Identifica diferentes usuários ao acessar páginas protegidas por senha
Connection Indica se o cliente pode gerenciar conexões persistentes HTTP. Conexões persistentes permitem que o cliente ou navegador obtenha vários arquivos em uma única solicitação.Keep-Alive Indica que a conexão persistente está habilitada
Content-Length Apenas para solicitações POST, indica o número de bytes dos dados POST
Cookie Retorna cookies enviados anteriormente ao servidor para o navegador
Host Indica o nome do host e a porta na URL original
Se-Modified-Since Indica que o cliente precisará da página apenas se a página for modificada na data especificada. O servidor envia304Código para o cliente, indicando que não há recursos atualizados
Se-Unmodified-Since E se-Modified-Since ao contrário, a operação só será bem-sucedida se o documento não tiver sido modificado após a data especificada
Referer Marca a URL da página referenciada. Por exemplo, se você estiver na página1Depois disso, clicou em um link para a página2Se1Da URL estarão incluídas na solicitação de página do navegador2As informações de cabeçalho
User-Agent Para distinguir entre solicitações enviadas por diferentes navegadores ou clientes e retornar conteúdos diferentes para diferentes tipos de navegadores

Classe HttpServletRequest

O objeto request é um exemplo da classe javax.servlet.http.HttpServletRequest. Cada vez que um cliente solicita uma página, o motor JSP gera um novo objeto para representar essa solicitação.

O objeto request oferece uma série de métodos para obter informações de cabeçalhos HTTP, incluindo dados de formulário, cookies, métodos HTTP etc.

A seguir, serão apresentados alguns métodos comuns para obter informações de cabeçalhos HTTP em programação JSP. Detalhes podem ser encontrados na tabela a seguir:

NúmeroMétodo& Descrição
1Cookie[] getCookies() Retorna o array de todos os cookies do cliente
2Enumeration getAttributeNames() Retorna a coleção de todos os nomes dos atributos do objeto request
3Enumeration getHeaderNames() Retorna a coleção de todos os nomes dos cabeçalhos HTTP
4Enumeration getParameterNames() Retorna a coleção de todos os parâmetros da solicitação
5HttpSession getSession() Retorna o objeto session correspondente à solicitação, se não existir, cria um novo
6HttpSession getSession(boolean create) Retorna o objeto session correspondente à solicitação, se não existir e o parâmetro create for true, retorna um novo objeto session
7Locale getLocale() Retorna o objeto Locale da página atual, que pode ser configurado na resposta
8Object getAttribute(String name) Retorna o valor do atributo com o nome especificado, se não existir, retorna null
9ServletInputStream getInputStream() Retorna o fluxo de entrada da solicitação
10String getAuthType() Retorna o nome do esquema de autenticação, usado para proteger o servlet, por exemplo "BASIC" ou "SSL" ou null se o JSP não tiver configurado medidas de proteção
11String getCharacterEncoding() Retorna o nome do conjunto de caracteres de encodamento da solicitação
12String getContentType() Retorna o tipo MIME do corpo da solicitação, se desconhecido, retorna null
13String getContextPath() Retorna o caminho contextual especificado no URI da solicitação
14String getHeader(String name) Retorna o cabeçalho de informações especificado pelo nome
15String getMethod() Retorna o método HTTP da solicitação, por exemplo GET, POST ou PUT
16String getParameter(String name) Retorna o parâmetro especificado pelo nome da solicitação, se não existir, retorna null
17String getPathInfo() Retorna qualquer caminho adicional relacionado a esta URL de solicitação
18String getProtocol() Retorna o nome e a versão do protocolo usado neste request
19String getQueryString() Retorna a string de consulta contida na URL deste request
20String getRemoteAddr() Retorna o endereço IP do cliente
21String getRemoteHost() Retorna o nome completo do cliente
22String getRemoteUser() Retorna o usuário que se autenticou no cliente, se o usuário não estiver autenticado retorna null
23String getRequestURI() Retorna o URI do request
24String getRequestedSessionId() Retorna o ID da sessão especificado pelo request
25String getServletPath() Retorna o caminho do servlet solicitado
26String[] getParameterValues(String name) Retorna todos os valores do parâmetro com nome especificado, se não existir retorna null
27boolean isSecure() Retorna se a solicitação usou um canal criptografado, como HTTPS
28int getContentLength() Retorna o número de bytes contidos no corpo da solicitação, se desconhecido retorna-1
29int getIntHeader(String name) Retorna o valor da cabeça de solicitação de nome especificado
30int getServerPort() Retorna o número da porta do servidor

Exemplo de cabeçalho de informações HTTP

Neste exemplo, usaremos o método getHeaderNames() da classe HttpServletRequest para ler as informações de cabeçalho HTTP. Este método retorna as informações de cabeçalho da solicitação HTTP atual em forma de enumeração.

Após obter o objeto Enumeration, utilize uma maneira padrão para percorrer o objeto Enumeration, usando o método hasMoreElements() para determinar quando parar, e o método nextElement() para obter o nome de cada parâmetro.

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="java.io.*,java.util.*" %>
!DOCTYPE html
<html>
<head>
<meta charset="utf-8">
<title>Tutorial Básico da Web(oldtoolbag.com)</title>
</head>
<body>
<h2>Exemplo de Requisição de Cabeçalho HTTP</h2>
<table width="100%" border="1" align="center">
<tr bgcolor="#949494">
<th>Nome de Header</th><th>Valores de Header</th>
</tr>
<%
   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");
   }
%>
</table>
</body>
</html>

Acessando main.jsp, você obterá o seguinte resultado:

Você pode tentar outros métodos da classe HttpServletRequest no código acima.