Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
web-programmirovanie_uchebnoe_posobie.pdf
Скачиваний:
95
Добавлен:
09.02.2015
Размер:
4.9 Mб
Скачать

Учебное пособие по web-программированию (2013)

Рисунок 3.4.

При этом чтение параметров инициализации в данном примере может быть выполнено с использованием следующих методов (конечно, в рамках сервлета):

ServletConfig config = getServletConfig();

String driverclass = config.getInitParameter("driverclass"); String jdbcURL = config.getInitParameter("jdbcURL"); String user = config.getInitParameter("user");

String password = config.getInitParameter("pass");

Тема 4. Веб-сессия

Способы прослеживания сессии. Подходы к работе с Cookies и HttpSession. Отличия между методами GET и POST. Способы реализации слушателей атрибутов сессии и создания-удаления сессии.

Важная особенность HTTP в том, что он не хранит состояние. Преимущества:

-упрощение реализации сервера Недостатки:

-необходима передача дополнительной информации в каждом запросе

-нет гарантии, что вся информация доставлена клиенту

Пример передачи информации в запросе приведён на рисунке 4.1.

-19-

Учебное пособие по web-программированию (2013)

Рисунок 4.1.

Существует два метода передачи параметров GET и POST. Однако, с точки зрения сервлета параметры, передаваемые по GET и POST ничем не отличаются. Однако с точки зрения пользователя он видит либо длинный URL, либо короткий (сравните рисунок 4.2 и 4.1). Если на странице, в которой методом POST передавались параметры нажать кнопку «Обновить страницу», то браузер выдаст запрос о необходимости повторной передачи параметров.

Рисунок 4.2.

При взаимодействии с сервером можно параметры, которые будут редко изменяться, сохранять в Cookies. Концепция Cookies (рисунок 4.3):

С сервера передаётся javax.servlet.http.Cookie — одна или более пар имязначение

Cookie сохраняется на клиенте и присоединяется к каждому запросу

Проблема: не все браузеры разрешают Cookie

Создание Cookie осуществляется с использованием конструктора public Cookie(String name, String value)

Основные методы javax.servlet.http.Cookie:

public int getMaxAge()

- получение максимального времени существования Cookie в секундах

public String getValue()

-20-

Учебное пособие по web-программированию (2013)

-получение значения

public String getPath()

-получение пути

public String getName()

-получение имени

public void setMaxAge(int secondExpire)

-установка времени устаревания

public void setValue(String value)

-установка значения

public void setPath(String uri)

-установка пути

Подробнее можно ознакомиться по адресу: http://docs.oracle.com/javaee/6/api/javax/servlet/http/Cookie.html

Чтение Cookie осуществляется методом HttpServletRequest: public Cookie[] getCookies()

Отправка — методом HttpServletResponse: public void addCookie(Cookie cookie)

Пример работы с Cookie.

Шаг 1. Создаём страницу, которая запрашивает имя пользователя (рисунок

4.3).

Рисунок 4.3.

Шаг 2. Пишем сервлет, в котором обрабатываем возможность получения Cookie в запросе (рисунок 4.4). Если получено значение в Cookie, то оно обрабатывается, иначе — выдаётся запрос на ввод информации. В учебных целях при создании Cookie устанавливаем короткое время жизни (в данном примере — 15 секунд).

-21-

Учебное пособие по web-программированию (2013)

Рисунок 4.4.

Шаг 3. В результате получаем запрос информации от пользователя только при устаревании Cookie (рисунок 4.5).

Рисунок 4.5.

Дополнительную информацию можно получить по адресу:

-22-

Учебное пособие по web-программированию (2013)

http://www.tutorialspoint.com/servlets/servlets-cookies-handling.htm

Кроме Cookies информацию можно хранить в сессии javax.servlet.http.HttpSession:

public Object getAttribute(String name)

-получение атрибута по имени

public String getId()

-получение уникального идентификатора сессии

public int getMaxInactiveInterval()

-получение максимального времени жизни сессии при отсутствии активности пользователя (пример приведён на рисунке 1.8)

public ServletContext getServletContext()

-получение контекста сервлета

public void invalidate()

-сделать сессию недоступной (используется для защиты информации)

public boolean isNew()

-проверка, что сессия новая

public void setAttribute(String name, Object value)

-установка значения атрибута

public void removeAttribute(String name)

-удаление атрибута

public void setMaxInactiveInterval(int seconds)

-установка максимального времени жизни сессии (в секундах)

Подробнее можно ознакомиться по адресу: http://docs.oracle.com/javaee/6/api/javax/servlet/http/HttpSession.html

Пример сохранения параметров в сессии приведён на рисунке 4.6.

-23-

Учебное пособие по web-программированию (2013)

Рисунок 4.6.

Добавление, удаление и изменение значения атрибутов сессии может контролироваться с помощью слушателей javax.servlet.http.HttpSessionAttributeListener:

public void attributeAdded(HttpSessionBindingEvent event)

public void attributeReplaced(HttpSessionBindingEvent event)

public void attributeRemoved(HttpSessionBindingEvent event)

Подробнее можно ознакомиться по адресу: http://docs.oracle.com/javaee/6/api/javax/servlet/http/HttpSessionAttributeListener.h

tml

В качестве параметра слушателю параметров сессии передаётся объект javax.servlet.http.HttpSessionBindingEvent:

public String getName()

public Object getValue()

Подробнее можно ознакомиться по адресу: http://docs.oracle.com/javaee/6/api/javax/servlet/http/HttpSessionBindingEvent.html

Принципы создания слушателей идентичны, описанным в 3 теме.

Кроме параметров сессииможно контролировать процесс создания и удаления сессии. Для данной операции может использоваться

-24-

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]