Использование закладок
Закладки (Cookies) это способ сервера (или сервлета, как части сервера) посылать клиенту на хранение часть информации, чтобы потом получать эту информацию от клиента. Сервлеты посылают закладки клиенту, добавляя код в ответе в HTTP заголовки. Клиенты автоматически возвращают закладки, добавляя код в запросы в HTTP заголовках.
Каждый заголовок HTTP запроса и ответа именован и имеет единственное значение. Например, закладкой мог бы быть заголовок с именем BookToBuy со значением 304qty1, сообщающим вызываемому приложению, что пользователь хочет купить книгу с номером 304 количеством 1 единица. (Закладки и их значения зависят от приложений.)
Множественные закладки могут иметь одно и тоже имя. Например, сервлет может послать две закладки, имя которых BookToBuy; одна может иметь величину приведенную выше, 304qty1, когда вторая - значение 301qty3. Эти закладки будут означать, что пользователь хочет купить одну книгу с номером 304, и три книги с номером 301.
В добавление к имени и значению, Вы также можете предоставить необязательные элементы, такие, как комментарии. Текущий броузер может не всегда правильно воспринимать необязательные параметры, поэтому Вы не должны полагаться на них.
Сервер может обеспечить одну или более закладок для клиента. Предполагается, что программа клиента, как web броузер, должна поддерживать 20 закладок на хост, как минимум четыре килобайта каждая.
Когда Вы посылаете закладку клиенту, стандартный кэш HTTP/1.0 не будет кэшировать страницу. На данный момент, javax.servlet.http.Cookie не поддерживает HTTP/1.1 модули кэширования.
Закладки, которые клиент сохранил для сервера, возвращаются клиентом только этому серверу. Сервер может включать множество сервлетов; пример Duke's Bookstore
сделан из нескольких сервлетов работающих на одном сервере. Потому как закладки возвращаются серверу, сервлеты работающие на этом сервере совместно используют эти закладки. Пример в этом разделе иллюстрирует этот факт на сервлетах CatalogServlet и ShowCart, работающих с одними закладками.
Заметка: В этом разделе приводится пример не являющийся частью примера Duke's Bookstore. Пример Duke's Bookstore мог бы использовать код использованный в этом уроке, если бы использовал закладки вместо прослеживания сессии для определения заказа клиента. Поскольку закладки не являются частью примера Duke's Bookstore, будем считать этот код псевдокодом
Чтобы отправить закладку,
Чтобы извлечь информацию из закладки,