По умолчанию, прослеживание сессии использует закладки, чтобы ассоциировать идентификатор сессии с пользователем. Чтобы также поддерживать пользователей, у которых броузер не работает с закладками, или включен в режим игнорирования их, Вы должны использовать перезапись URL. (По скольку некоторые сервера поддерживают перезапись URL, утилита servletrunner являющаяся частью JSDK2.0 не поддерживает это. Для того чтобы прослеживания сессии работало, когда сервлет запущен с помощью servletrunner, клиент должен поддерживать закладки.)
Когда Вы используете перезапись URL, Вы вызываете методы, когда необходимо, так, чтобы идентификатор был включен в ссылку. Вы должны использовать эти методы для каждой ссылке в ответе сервлета.
Методом, который ассоциирует идентификатор сессии с URL, является метод HttpServletResponse.encodeUrl в пакете JSDK2.0 и HttpServletResponse.encodeURL в пакете JSDK2.1. Если Вы переадресовываете пользователя на другую страницу, методом, который ассоциирует идентификатор сессии с URL, является метод HttpServletResponse.encodeRedirectUrl в пакете JSDK2.0 и HttpServletResponse.encodeRedirectURL в пакете JSDK2.1.
Методы URL кодирования и кодирования переадресации определяют должен ли URL быть перезаписан и возвращают измененный или не измененный URL. (Правила для URL-ов и переадресуемых URL-ов разные, но в основном, если сервер определяет, что данный броузер поддерживает закладки, URL переписан не будет.)
Замечание: Здесь показан код, не являющийся частью примера Duke's Bookstore для JSDK2.1. Пример Duke's Bookstore мог бы содержать код, подобный приведенному ниже, в случае если бы использовалась перезапись URL. Поскольку перезапись URL не является частью примера Duke's Bookstore, будем считать этот код псевдокодом.
Если бы пример Duke's Bookstore использовал перезапись URL, его код в сервлете CatalogServlet мог бы выглядеть следующим образом:
public class CatalogServlet extends HttpServlet {
public void doGet (HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // Получаем сесию пользователя, корзину для покупок, Writer и тому подобное.