JSP Processamento de Cookies
Cookie é um arquivo de texto armazenado no cliente, e eles guardar um monte de informações sobre a faixa. Na base da tecnologia servlet, JSP, aparentemente, ser capaz de fornecer suporte para o cookie HTTP.
Normalmente existem três etapas para identificar os visitantes do repeat:
- script de servidor envia uma série de cookie para o navegador. Tais como nome, idade, número de identificação, etc.
- Navegadores armazenar essas informações na máquina local, para se preparar para contingências.
- A próxima vez que o navegador envia qualquer solicitação para o servidor, ele também será enviado para o servidor as informações do cookie, eo servidor usa essa informação para identificar o usuário ou para fazer algumas outras coisas.
Este capítulo irá ensinar-lhe como definir ou redefinir os métodos de cookies, e como acessá-los e como removê-los.
JSP Biscoito necessidades de processamento de codificar e decodificar chinesa, como segue:
String str = java.net.URLEncoder.encode("中文"); //编码 String str = java.net.URLDecoder.decode("编码后的字符串"); // 解码
Análise do bolinho
Cookie é geralmente definida (embora JavaScript pode ser definida diretamente em um cookie do navegador) nas informações de cabeçalho HTTP. JSP, definir um cabeçalho de cookie para enviar as seguintes informações para o servidor:
HTTP/1.1 200 OK Date: Fri, 04 Feb 2015 21:03:38 GMT Server: Apache/1.3.9 (UNIX) PHP/4.0b3 Set-Cookie: name=w3big; expires=Friday, 04-Feb-07 22:03:38 GMT; path=/; domain=w3write.com Connection: close Content-Type: text/html
Como você pode ver, o cabeçalho Set-Cookie contém um par chave-valor, um tempo GMT (Greenwich Mean), um caminho, um nome de domínio. par valor-chave é codificado como um URL. Validade do campo é um comando que diz ao navegador após o tempo que você pode remover esse cookie.
Se o seu navegador está configurado para armazenar cookies, então ele vai guardar as informações até ao seu termo. Se o usuário visitar qualquer página corresponder ao caminho do cookie e nome de domínio, em seguida, o navegador irá re-enviar o cookie de volta ao servidor. cabeçalho do lado do navegador parece com isso:
GET / HTTP/1.0 Connection: Keep-Alive User-Agent: Mozilla/4.6 (X11; I; Linux 2.2.6-15apmac ppc) Host: zink.demon.co.uk:1126 Accept: image/gif, */* Accept-Encoding: gzip Accept-Language: en Accept-Charset: iso-8859-1,*,utf-8 Cookie: name=xyz
scripts de JSP para acessar o cookie getCookies objeto de solicitação de método (), que retorna uma matriz de objetos do bolinho.
Métodos do bolinho de servlet
A tabela a seguir lista os objetos do bolinho métodos comumente utilizados:
Não. | Method & descrição |
---|---|
1 | setDomain public void (padrão de String) Definir o domínio de cookie, tais w3cschool.cc |
2 | Cadeia getDomain pública () Obter domínio de cookie, tais w3cschool.cc |
3 | SetMaxAge public void (int validade) Definir validade do cookie, em segundos, o padrão é válido para a sessão atual do tempo de sobrevivência |
4 | getMaxAge int público () Obter validade do cookie, em segundos, o padrão é -1, indicando que o cookie vai viver até o navegador é fechado |
5 | Cadeia getName pública () Retorna o nome do cookie, o nome não pode ser alterado depois de criado |
6 | setValue public void (String newValue) Defina o valor do cookie |
7 | Public String getValue () Obtém o valor do cookie |
8 | SetPath public void (String uri) Definir o caminho do cookie, o padrão é o URL atual para todos os diretórios de páginas, e todos os subdiretórios sob o |
9 | Cadeia getPath pública () Obter caminho do cookie |
10 | setSecure public void (boolean flag) Para indicar se a transmissão cookie criptografado |
11 | SetComment public void (propósito String) Definindo comentário para descrever a finalidade do cookie. Quando o cookie do navegador apresentada ao usuário, os comentários será muito útil |
12 | Cadeia getComment pública () Retorna o comentário descrevendo o propósito do cookie, ou null se não houver |
Definições cookies usando JSP
Use JSP definido bolinho consiste em três etapas:
(1) Criar um objeto Cookie: chamando o Cookie construtor usando um nome de cookie e valor como parâmetros, eles são strings.
Cookie cookie = new Cookie("key","value");
Certifique-se de ter em mente que os nomes e valores não podem conter espaços ou os seguintes caracteres:
[ ] ( ) = , " / ? @ : ;
(2) definição é válida: Call SetMaxAge () função indica quanto tempo o cookie é válido dentro (em segundos). A seguir irá definir válida durante 24 horas.
cookie.setMaxAge(60*60*24);
(3) envia o cookie para os cabeçalhos de resposta HTTP: Chamar função response.addCookie () para responder ao cabeçalho HTTP para adicionar o cookie.
response.addCookie(cookie);
Exemplos Demonstração
código de arquivo main.jsp é a seguinte:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ page import="java.net.*" %> <% // 编码,解决中文乱码 String str = URLEncoder.encode(request.getParameter("name"),"utf-8"); // 设置 name 和 url cookie Cookie name = new Cookie("name", str); Cookie url = new Cookie("url", request.getParameter("url")); // 设置cookie过期时间为24小时。 name.setMaxAge(60*60*24); url.setMaxAge(60*60*24); // 在响应头部添加cookie response.addCookie( name ); response.addCookie( url ); %> <html> <head> <title>设置 Cookie</title> </head> <body> <h1>设置 Cookie</h1> <ul> <li><p><b>网站名:</b> <%= request.getParameter("name")%> </p></li> <li><p><b>网址:</b> <%= request.getParameter("url")%> </p></li> </ul> </body> </html>
O que se segue é um formulário HTML simples através do método GET para enviar dados para o arquivo main.jsp cliente e definir o cookie:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>本教程(w3write.com)</title> </head> <body> <form action="main.jsp" method=GET> 站点名: <input type="text" name="name"> <br /> 网址: <input type="text" name="url" /> <input type="submit" value="提交" /> </form> </body> </html>
Salve o código HTML acima em arquivo test.htm.
Coloque o arquivo no diretório atual no âmbito do projecto WebContent jsp (com main.jsp mesmo diretório).
Ao visitar http: // localhost: 8080 / testjsp / test main.jsp enviar os dados para um arquivo, Gif demonstração mostrado abaixo:
Experimente digitar "nome do site" e "URL", em seguida, clique no botão enviar, ele irá exibir o "nome do site" e "URL" em sua tela, e definir o "nome do site" e "URL" cookie dois.
Use JSP para ler biscoito
Quer ler o cookie, você vai precisar ligar para request.getCookies () para obter uma matriz de javax.servlet.http.Cookie objeto e, em seguida, atravessar a matriz usando o método getValue () getName () método e para obter cada cookie o nome eo valor.
Vamos ler o último exemplo do cookie, o seguinte é o código de arquivo cookie.jsp:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ page import="java.net.*" %> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>获取 Cookie</title> </head> <body> <% Cookie cookie = null; Cookie[] cookies = null; // 获取cookies的数据,是一个数组 cookies = request.getCookies(); if( cookies != null ){ out.println("<h2> 查找 Cookie 名与值</h2>"); for (int i = 0; i < cookies.length; i++){ cookie = cookies[i]; out.print("参数名 : " + cookie.getName()); out.print("<br>"); out.print("参数值: " + URLDecoder.decode(cookie.getValue(), "utf-8") +" <br>"); out.print("------------------------------------<br>"); } }else{ out.println("<h2>没有发现 Cookie</h2>"); } %> </body> </html>
Após o acesso do browser, a saída é:
Use JSP Excluir Cookies
Remover cookie é muito simples. Se você deseja excluir um cookie, para seguir os passos abaixo para fazer na linha:
- Sendo um cookie existente é então armazenado num objecto de biscoito.
- A cookie será definido como 0.
- Este cookie será adicionado de volta o cabeçalho de resposta.
Exemplos Demonstração
O procedimento a seguir exclui um cookie chamado "nome" quando você é o segundo cookie.jsp prazo, nome será nulo.
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ page import="java.net.*" %> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>获取 Cookie</title> </head> <body> <% Cookie cookie = null; Cookie[] cookies = null; // 获取当前域名下的cookies,是一个数组 cookies = request.getCookies(); if( cookies != null ){ out.println("<h2> 查找 Cookie 名与值</h2>"); for (int i = 0; i < cookies.length; i++){ cookie = cookies[i]; if((cookie.getName( )).compareTo("name") == 0 ){ cookie.setMaxAge(0); response.addCookie(cookie); out.print("删除 Cookie: " + cookie.getName( ) + "<br/>"); } out.print("参数名 : " + cookie.getName()); out.print("<br>"); out.print("参数值: " + URLDecoder.decode(cookie.getValue(), "utf-8") +" <br>"); out.print("------------------------------------<br>"); } }else{ out.println("<h2>没有发现 Cookie</h2>"); } %> </body> </html>
Acessado através de um navegador, a saída é:
Outra visita http: // localhost: 8080 / testjsp / cookie.jsp, terá os seguintes resultados:
Você pode ver a largura name = "70%" "nome" do cookie foi embora.
Você também pode excluir manualmente o cookie no seu browser. navegador IE, clicando no menu Ferramentas e selecione Opções da Internet, clique em Excluir Cookies, você pode excluir todo o cookie.