Latest web development tutorials

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, вы можете удалить все куки.