Файлы cookie представляют собой текстовые файлы, хранящиеся на клиентском компьютере и сохраняющие большой объем информации о треках. Основываясь на технологии сервлетов, JSP, очевидно, может обеспечить поддержку файлов cookie HTTP.
Обычно есть три шага для выявления постоянных клиентов:
Серверный скрипт отправляет в браузер серию файлов cookie. Например, имя, возраст, идентификационный номер и т. д.
Браузер сохраняет эту информацию локально на компьютере на случай, если она понадобится.
В следующий раз, когда браузер отправит какой-либо запрос на сервер, он также отправит эту информацию о файлах cookie на сервер, а затем сервер использует эту информацию для идентификации пользователя или выполнения других действий.
В этом разделе вы узнаете, как устанавливать или сбрасывать файлы cookie, как получить к ним доступ и как их удалить.
Файлы cookie обычно устанавливаются в заголовках HTTP (хотя JavaScript может устанавливать файлы cookie непосредственно в браузере). В JSP установка файла cookie требует отправки на сервер следующего информационного заголовка:
HTTP/1.1 200 OKДата: пятница, 4 февраля 2000 г., 21:03:38 GMTServer: Apache/1.3.9 (UNIX) PHP/4.0b3Set-Cookie: name=xyz; истекает=пятница, 07.04.07, 22:03: 38 GMT; путь =/; домен =tutorialspoint.comСоединение: closeContent-Type: text/html
Как видите, заголовок Set-Cookie содержит пару ключ-значение, время по Гринвичу (GMT), путь и имя домена. Пары ключ-значение будут закодированы как URL-адреса. Поле даты истечения срока действия представляет собой инструкцию, сообщающую браузеру, по истечении которого он может удалить этот файл cookie.
Если ваш браузер настроен на сохранение файлов cookie, он сохранит эту информацию до истечения срока их действия. Если какая-либо страница, посещенная пользователем, соответствует пути и имени домена в файле cookie, браузер повторно отправит файл cookie обратно на сервер. Заголовок на стороне браузера выглядит так:
GET/HTTP/1.0Соединение: Keep-AliveПользовательский агент: Mozilla/4.6 (X11; I; Linux 2.2.6-15apmac ppc)Хост: zink.demon.co.uk:1126Принять: image/gif, */*Принять- Кодировка: gzipAccept-Language: enAccept-Charset: iso-8859-1,*,utf-8Cookie: name=xyz
Скрипты JSP получают доступ к этим файлам cookie через метод getCookies() в объекте запроса. Этот метод возвращает массив объектов Cookie.
В следующей таблице перечислены часто используемые методы в объектах Cookie:
серийный номер | Метод и описание |
---|---|
1 | public void setDomain (шаблон String) устанавливает доменное имя файла cookie, например w3cschool.cn. |
2 | public String getDomain() получает доменное имя файла cookie, например w3cschool.cn. |
3 | public void setMaxAge(int expiry) устанавливает период действия cookie в секундах. Период действия по умолчанию — это время существования текущего сеанса. |
4 | public int getMaxAge() получает период действия файла cookie в секундах, значение по умолчанию равно -1, что указывает на то, что файл cookie будет действовать до тех пор, пока браузер не будет закрыт. |
5 | public String getName() возвращает имя файла cookie. Имя нельзя изменить после его создания. |
6 | public void setValue(String newValue) устанавливает значение файла cookie |
7 | public String getValue() получает значение файла cookie |
8 | public void setPath(String uri) устанавливает путь cookie, который по умолчанию соответствует всем URL-адресам в текущем каталоге страниц и всем подкаталогам в этом каталоге. |
9 | public String getPath() получает путь к файлу cookie |
10 | public void setSecure(логический флаг) указывает, следует ли шифровать файл cookie для передачи. |
11 | public void setComment(String Цель) устанавливает комментарий, описывающий назначение файла cookie. Аннотации могут быть полезны, когда браузер отображает пользователю файл cookie. |
12 | public String getComment() возвращает комментарий, описывающий назначение файла cookie, или значение null, если его нет. |
Установка файлов cookie с помощью JSP включает в себя три этапа:
(1) Создайте объект Cookie: вызовите конструктор Cookie, используя имя и значение cookie в качестве параметров, оба из которых являются строками.
Файл cookie cookie = новый файл cookie («ключ», «значение»);
Важно помнить, что ни имя, ни значение не могут содержать пробелы или следующие символы:
[ ] ( ) = , " / ? @ : ;
(2) Установите период действия: вызовите функцию setMaxAge(), чтобы указать, как долго (в секундах) куки-файл действителен. Следующая операция устанавливает период действия на 24 часа.
cookie.setMaxAge(60*60*24);
(3) Отправьте файлы cookie в заголовок ответа HTTP: вызовите функцию response.addCookie(), чтобы добавить файлы cookie в заголовок ответа HTTP.
ответ.addCookie(cookie);
<% // Установка файлов cookie для first_name и Last_name Cookie firstName = new Cookie("first_name", request.getParameter("first_name")); Cookie LastName = new Cookie("last_name",request.getParameter("last_name")); //Установим срок действия cookie на 24 часа. firstName.setMaxAge(60*60*24); LastName.setMaxAge(60*60*24); // Добавляем cookie в заголовок ответа. head><title>Настройка файлов cookie</title></head><body><center><h1>Настройка Файлы cookie</h1></center><ul><li><p><b>Имя:</b><%= request.getParameter("first_name")%></p></li>< li><p><b>Фамилия:</b> <%= request.getParameter("last_name")%></p></li></ul></body></html>
Поместите указанный выше файл в каталог <каталог установки Tomcat>/webapps/ROOT, а затем посетите http://localhost:8080/hello.jsp, вы получите следующий вывод:
Попробуйте ввести имя и фамилию, а затем нажмите кнопку «Отправить». На вашем экране отобразятся имя и фамилия, а также будут установлены два файла cookie: имя и фамилия, которые будут отправлены на сервер при следующем нажатии. кнопка отправки.
Чтобы прочитать файлы cookie, вам необходимо вызвать метод request.getCookies(), чтобы получить массив объектов javax.servlet.http.Cookie, затем выполнить итерацию по массиву и использовать методы getName() и метод getValue() для получения каждого файла cookie. .имя и значение.
Давайте прочитаем файлы cookie из предыдущего примера.
<html><head><title>Чтение файлов cookie</title></head><body><center><h1>Чтение файлов cookie</h1></center><% Cookie cookie = null Cookie[] cookie =; null; // Получаем данные cookie, которые представляют собой массив cookie = request.getCookies(); if( cookies != null ){ out.println("<h2> Имя и значение найденных файлов cookie</h2>"); интервал я = 0; i < cookie.length; i++){ cookie = cookie[i]; out.print("Имя: " + cookie.getName( ) + ", "); out.print("Значение: " + cookie.getValue ( )+" <br/>"); } }else{ out.println("<h2>Файлы cookie не найдены</h2>" }%></body></html>
Если вы установите имя файла cookie «Джон», а фамилию — «Игрок» и посетите http://localhost:8080/main.jsp, вы получите следующий вывод:
Имя и значение найденных файлов cookie: имя: first_name, значение: John, имя: Last_name, значение: Player
Удалить файлы cookie очень просто. Если вы хотите удалить файл cookie, просто следуйте инструкциям ниже:
Получите существующий файл cookie и сохраните его в объекте Cookie.
Установите дату истечения срока действия cookie на 0.
Добавьте этот файл cookie обратно в заголовок ответа.
Следующая программа удаляет файл cookie с именем «first_name». При следующем запуске main.jsp имя first_name будет иметь значение null.
<html><head><title>Чтение файлов cookie</title></head><body><center> <h1>Чтение файлов cookie</h1></center><% Cookie cookie = null Cookie[] cookie =; null // Получаем файлы cookie под текущим именем домена, которое представляет собой массив cookie = request.getCookies(); if( cookies != null ){ out.println("<h2> Имя и значение найденных файлов cookie</h2> "); for (int i = 0; i < cookie.length; i++){ cookie = cookie[i]; if((cookie.getName()).compareTo("first_name") == ){ cookie.setMaxAge(0); (cookie); out.print("Удален файл cookie: " + cookie.getName( ) + "<br/>" } out.print("Name: " + cookie.getName( ) + ", "); out.print("Value: " + cookie.getValue( )+" <br/>"); } }else{ out.println( "<h2>Файлы cookie не найдены</h2>"); тело></html>
Доступ к нему даст вам следующий результат:
Имя и значение файлов cookieУдаленный файл cookie: first_nameName: first_name, значение: JohnName: Last_name, значение: Player
Посетите http://localhost:8080/main.jsp еще раз, и вы получите следующие результаты:
Имя и значение найденных файлов cookie: Имя_фамилии, Значение: Игрок.
Вы также можете удалить файлы cookie вручную в своем браузере. Нажмите пункт меню «Инструменты», затем выберите «Свойства обозревателя», нажмите «Удалить файлы cookie», чтобы удалить все файлы cookie.