JSP Обработка Cookie
Cookie представляет собой текстовый файл, хранящийся в клиенте, и они экономят много информации о дорожке. В основе технологии сервлетов, JSP-видимому, в состоянии обеспечить поддержку HTTP куки.
Как правило, существуют три шага для выявления повторных посетителей:
- Сценарий Сервер отправляет серию куки в браузере. Такие, как имя, возраст, номер удостоверения личности и т.д.
- Браузеры хранить эту информацию на локальном компьютере, чтобы подготовиться к непредвиденным обстоятельствам.
- В следующий раз, когда браузер отправляет любой запрос на сервер, он также будет отправлен на сервер информацию о куки, и сервер использует эту информацию для идентификации пользователя или делать некоторые другие вещи.
Эта глава научит вас, как установить или переустановить методы печенья, и как получить к ним доступ и как удалить их.
JSP, печенья обработки потребности китайского кодирования и декодирования, следующим образом:
String str = java.net.URLEncoder.encode("中文"); //编码 String str = java.net.URLDecoder.decode("编码后的字符串"); // 解码
Анализ Cookie
Печенье обычно устанавливается (хотя JavaScript может быть установлен непосредственно в браузере куки) в информации заголовка HTTP. JSP, установить заголовок куки, чтобы отправить следующую информацию на сервер:
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=w3big.com Connection: close Content-Type: text/html
Как вы можете видеть, заголовок Set-Cookie содержит пару ключ-значение, а по Гринвичу (GMT) время, путь, доменное имя. пара ключ-значение кодируется как URL. Срок действия поля является команда, которая сообщает браузеру, после того, как в какое время вы можете удалить этот печенье.
Если ваш браузер настроен для хранения куки, то он будет сохранять информацию до истечения срока их действия. Если пользователь посещает любую страницу соответствует пути куки и имя домена, то браузер будет повторно отправить куки обратно на сервер. На стороне браузера заголовок выглядит следующим образом:
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
JSP скрипты для доступа к куки по запросу объекта getCookies () метод, который возвращает массив объектов Cookie.
Методы Servlet Cookie
В следующей таблице перечислены объекты Cookie часто используемые методы:
Нет . | Метод и описание |
---|---|
1 | общественного недействительными setDomain (String рисунок) Установите домен куки, такие w3cschool.cc |
2 | Строка GetDomain общественности () Получить домен куки, такие w3cschool.cc |
3 | общественного недействительными setMaxAge (INT экспирации) Установка истечения срока действия куки, в секундах, по умолчанию действительна для текущей сессии времени выживания |
4 | общественное INT getMaxAge () Получите истечение печенья, в секундах, по умолчанию равно -1, что указывает, что куки будут жить до закрытия браузера |
5 | Строка GetName общественности () Возвращает имя куки, имя не может быть изменен после того, как он будет создан |
6 | общественного недействительными SetValue (String новое_значение) Установите значение куки |
7 | Строка ПолучитьЗначение общественности () Получает значение куки |
8 | общественного недействительными setPath (String URI) Установка пути печенья, по умолчанию является текущим URL для всех страниц каталога, и все подкаталоги в соответствии с лицензией |
9 | Строка GetPath общественности () Получить путь к куки |
10 | общественного недействительными setSecure (логический флаг) Для того, чтобы указать, является ли куки зашифрованы передачи |
11 | общественного недействительными setComment (String назначения) Установка комментария для описания цели печенья. Когда браузер куки представлены пользователю, комментарии будут очень полезны |
12 | Строка getComment общественности () Возвращает комментарий, описывающий назначение куки, или нулевое значение, если нет |
Настройки Cookie с использованием JSP
Использование JSP установить печенье состоит из трех этапов:
(1) Создание объекта Cookie: вызов конструктора Cookie , используя имя куки и значение в качестве параметров, они являются строками.
Cookie cookie = new Cookie("key","value");
Будьте уверены, чтобы иметь в виду, что имена и значения не могут содержать пробелы или следующие символы:
[ ] ( ) = , " / ? @ : ;
(2) установка действительна: Call setMaxAge () функция указывает на то, как долго куки действительна в течение (в секундах). Ниже будет установлена действительна в течение 24 часов.
cookie.setMaxAge(60*60*24);
(3) посылает куки для заголовков ответа HTTP: вызов функции response.addCookie () для ответа на заголовок HTTP , чтобы добавить печенье.
response.addCookie(cookie);
Примеры Demo
Код main.jsp файла выглядит следующим образом:
<%@ 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>
Ниже приводится простая форма HTML с помощью метода GET для отправки данных в файл клиента main.jsp и установить куки:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>本教程(w3big.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>
Сохранить выше HTML код в файл test.htm.
Поместите файл в текущей директории под WebContent Jsp проекта (с main.jsp той же директории).
Посетив HTTP: // локальный: 8080 / testjsp / test.html main.jsp отправить форму данные в файл, Gif демо показано ниже:
Попробуйте ввести "название сайта" и "URL", а затем нажмите кнопку отправки, он будет отображать "название сайта" и "URL" в вашем экране, и установите "название сайта" и "URL" два печенья.
Использование JSP для чтения Cookie
Хотите прочитать куки, вам нужно будет позвонить request.getCookies () метод, чтобы получить массив объекта javax.servlet.http.Cookie, а затем пройти через массив с помощью метода GetName () и метод GetValue (), чтобы получить каждый печенье имя и значение.
Давайте прочитаем последний пример печенья, следующий код 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>
После доступа браузера, выход:
Использование JSP Удалить Cookie
Удалить печенье очень просто. Если вы хотите удалить куки, чтобы выполнить следующие шаги, чтобы сделать на линии:
- Будучи существующий куки затем хранится в объекте Cookie.
- Печенье будет установлен в 0.
- Это печенье будет добавлен обратно в заголовок ответа.
Примеры Demo
Следующая процедура удаляет куки с именем "имя", когда вы второй прогон 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]; 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>
Через браузер, выход:
Еще одно посещение HTTP: // локальный: 8080 / testjsp / cookie.jsp, получим следующие результаты:
Вы можете увидеть ширину Name = "70%" "имя" куки не было.
Вы также можете вручную удалить куки в вашем браузере. IE браузер, нажав в меню Сервис, затем выберите Свойства обозревателя, нажмите Delete Cookies, вы можете удалить все куки.