Создание закладки
Конструктор класса javax.servlet.http.Cookie создает закладу с начальным именем и значением. Вы можете изменить значение закладки позже, вызвав метод setValue.
Имя закладки должно быть HTTP/1.1 токен. Токены это строки, не содержащие специальных символов перечисленных в документе RFC 2068
. (буквенно-численные строки квалифицируемые как токены.) В добавление, имена, начинающиеся со знака доллар ("$") зарезервированы документом RFC 2109.Значением строки может быть любая строка, хотя не гарантируется, что значение null, будет одинаково работать на всех броузерах. В добавление, если Вы отправляете закладку, которая подчиняется оригинальной спецификации закладок Netscape's, не используйте пробелы или ниже приведенные символы:
[ ] ( ) = , " / ? @ : ;
Если сервлет возвращает ответ пользователю, используя Writer, создавайте закладку, прежде чем обратитесь к Writer. (Поскольку закладки отправляются к клиенту как заголовок, заголовки должны быть прописаны, прежде чем произойдет обращение к Writer.)
Если бы сервлет CatalogServlet использовал закладки для того, чтобы проследить заказ клиента, он бы создавал бы их следующим образом:
public void doGet (HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// Смотрим есть ли покупки в корзине
String bookId = request.getParameter("Buy");
//Если пользователь хочет добавить книгу, запоминаем это добавляя закладку
if (bookId != null) { Cookie getBook = new Cookie("Buy", bookId);
... }
// прежде чем начать вывод, устанавливаем тип содержимого
response.setContentType("text/html");
// теперь выводим данные ответа
PrintWriter out = response.getWriter(); out.println("<html>" + "<head><title> Book Catalog </title></head>" + ...); ... }