Quando um navegador solicita uma página da web, ele envia uma série de informações ao servidor da web que não podem ser lidas diretamente porque as informações são enviadas como parte dos cabeçalhos HTTP. Você pode verificar o protocolo HTTP para obter mais informações.
A tabela a seguir lista alguns conteúdos importantes do cabeçalho de informações do navegador. Você verá essas informações com frequência em futuras programações de rede:
Informação | descrever |
---|---|
Aceitar | Especifica os tipos MIME que o navegador ou outro cliente pode manipular. Seu valor geralmente é image/png ou image/jpeg |
Aceitar-Charset | Especifica o conjunto de caracteres a ser usado pelo navegador. Como ISO-8859-1 |
Aceitar-codificação | Especifique o tipo de codificação. Seu valor geralmente é gzip ou compress |
Aceitar-Idioma | Especifique o idioma preferido do cliente O servlet dará prioridade ao retorno de um conjunto de resultados no idioma atual, se o servlet suportar esse idioma. Como en, en-us, ru, etc. |
Autorização | Identifique diferentes usuários ao acessar páginas da web protegidas por senha |
Conexão | Indica se o cliente pode manipular conexões HTTP persistentes. Conexões persistentes permitem que o cliente ou navegador busque vários arquivos em uma solicitação. Keep-Alive significa habilitar conexões persistentes |
Comprimento do conteúdo | Aplica-se apenas a solicitações POST, indicando o número de bytes de dados POST |
Biscoitos | Retorna cookies previamente enviados do navegador para o servidor |
Hospedar | Indique o nome do host e o número da porta no URL original |
Se-Modificado-Desde | Indica que o cliente só necessita desta página web se ela tiver sido modificada na data especificada. O servidor envia um código 304 ao cliente, indicando que não há recursos atualizados. |
Se-não modificado-desde | Ao contrário de If-Modified-Since, a operação só terá sucesso se o documento não tiver sido modificado desde a data especificada |
Referente | Marca o URL da página referenciada. Por exemplo, se você estiver na página 1 e clicar em um link para a página 2, o URL da página 1 será incluído no cabeçalho da solicitação do navegador para a página 2. |
Agente do usuário | Usado para distinguir solicitações enviadas por diferentes navegadores ou clientes e retornar conteúdos diferentes para diferentes tipos de navegadores |
O objeto de solicitação é uma instância da classe javax.servlet.http.HttpServletRequest. Sempre que um cliente solicita uma página, o mecanismo JSP gera um novo objeto para representar a solicitação.
O objeto de solicitação fornece uma série de métodos para obter cabeçalhos de informações HTTP, incluindo dados de formulário, cookies, métodos HTTP, etc.
A seguir, apresentaremos alguns métodos comumente usados na programação JSP para obter cabeçalhos de informações HTTP. Consulte a tabela abaixo para obter detalhes:
número de série | Método e Descrição |
---|---|
1 | Cookie[] getCookies() retorna um array de todos os cookies no cliente |
2 | A enumeração getAttributeNames() retorna uma coleção de todos os nomes de atributos do objeto de solicitação |
3 | A enumeração getHeaderNames() retorna uma coleção de nomes de todos os cabeçalhos HTTP |
4 | A enumeração getParameterNames() retorna uma coleção de todos os parâmetros na solicitação |
5 | HttpSession getSession() retorna o objeto de sessão correspondente à solicitação. Caso contrário, crie um. |
6 | HttpSession getSession(boolean create) retorna o objeto de sessão correspondente à solicitação. Se não houver nenhum e o parâmetro create for verdadeiro, um novo objeto de sessão será retornado. |
7 | Locale getLocale() retorna o objeto Locale da página atual, que pode ser definido em resposta |
8 | O objeto getAttribute(String name) retorna o valor do atributo denominado name ou null se não existir. |
9 | ServletInputStream getInputStream() retorna o fluxo de entrada solicitado |
10 | String getAuthType() retorna o nome do esquema de autenticação usado para proteger o servlet, como "BASIC" ou "SSL" ou null se JSP não definir medidas de proteção |
11 | String getCharacterEncoding() retorna o nome do conjunto de codificação de caracteres da solicitação |
12 | String getContentType() retorna o tipo MIME do corpo da solicitação ou nulo se for desconhecido. |
13 | String getContextPath() retorna o caminho do contexto especificado no URI da solicitação |
14 | String getHeader(String name) retorna o cabeçalho de informações especificado pelo nome |
15 | String getMethod() retorna o método HTTP nesta solicitação, como GET, POST ou PUT |
16 | String getParameter(String name) retorna o parâmetro especificado por nome nesta solicitação ou nulo se não existir. |
17 | String getPathInfo() retorna quaisquer caminhos adicionais associados a este URL de solicitação |
18 | String getProtocol() retorna o nome do protocolo e a versão usada por esta solicitação |
19 | String getQueryString() retorna a string de consulta contida neste URL de solicitação |
20 | String getRemoteAddr() retorna o endereço IP do cliente |
vinte e um | String getRemoteHost() retorna o nome completo do cliente |
vinte e dois | String getRemoteUser() retorna o usuário autenticado pelo cliente através de login, ou nulo se o usuário não estiver autenticado. |
vinte e três | String getRequestURI() retorna o URI da solicitação |
vinte e quatro | String getRequestedSessionId() retorna o ID da sessão especificado pela solicitação |
25 | String getServletPath() retorna o caminho do servlet solicitado |
26 | String[] getParameterValues(String name) retorna todos os valores do parâmetro com o nome especificado ou null se não existir. |
27 | boolean isSecure() retorna se a solicitação usa um canal criptografado, como HTTPS |
28 | int getContentLength() retorna o número de bytes contidos no corpo da solicitação. Se for desconhecido, retorna -1. |
29 | int getIntHeader(String name) retorna o valor do cabeçalho da solicitação com o nome especificado |
30 | int getServerPort() retorna o número da porta do servidor |
Neste exemplo, usaremos o método getHeaderNames() da classe HttpServletRequest para ler os cabeçalhos HTTP. Este método retorna as informações do cabeçalho da solicitação HTTP atual na forma de uma enumeração.
Após obter o objeto Enumeration, use o método 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 import="java.io.*,java.util.*" %><html><head><title>Exemplo de solicitação de cabeçalho HTTP</title></head><body><center><h2 >Exemplo de solicitação de cabeçalho HTTP</h2><table align="center"><tr bgcolor="#949494"><th>Nome do cabeçalho</th><th>Valores do cabeçalho</th></tr ><% Enumeração 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></center></body></html>
Acesse main.jsp, você obterá os seguintes resultados:
Nome do cabeçalho | Valores do cabeçalho |
---|---|
aceitar | */* |
aceitar idioma | pt-br |
agente do usuário | Mozilla/4.0 (compatível; MSIE 7.0; Windows NT 5.1; Trident/4.0; InfoPath.2; MS-RTC LM 8) |
codificação de aceitação | gzip, desinflar |
hospedar | host local:8080 |
conexão | Mantenha-se vivo |
controle de cache | sem cache |
Você pode tentar outros métodos da classe HttpServletRequest no código acima.