Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lection_servlets.doc
Скачиваний:
30
Добавлен:
23.02.2016
Размер:
356.35 Кб
Скачать

Отримання інформації про сеанс

Об’єкт класу HttpSession отримується за допомогою методу getSession класу HttpServletRequest. Якщо метод повертає null, це означає, що клієнт ще приймає участі у сеансі, тому можна створити новий сеанс. Для цього у метод getSession передається параметр true:

HttpSession session = request.getSession(true);

Для отримання інформації про те, чи існував сеанс раніше або він щойно створений, використовується метод isNew.

Перегляд інформації про сеанс

Об’єкти HttpSession зберігаються на сервері. Вони автоматично зв’язуються з клієнтом за допомогою прихованих механізмів (cookies або перезапис URL). Ці об’єкти дозволяють зберігати будь-яку кількість ключів і асоційованих з ними значень. Для отримання раніше збережених даних використовується метод session.getAttribute(String name). Отримане значення типу Object повинно бути приведене до більш конкретного типу. Якщо заданий атрибут відсутній, повертається null.

Приклад, в якому ShoppingCart є деяким класом, визначеним для зберігання інформації по здійсненим купівлям:

HttpSession session = request.getSession(true);

ShoppingCart cart = (ShoppingCart)session.getAttribute(“shoppingCart”);

If (cart – null) {

Cart = new ShoppingCart();

Session.setAttribute(“shoppingCart”, cart);

}

doSomethingWith(cart);

Основні методи для роботи із сеансом:

public Object getValue(String name)

public Object getAttribute(String name)

Отримують із сеансу збережену інформацію

public void putValue(String name, Object value)

public void setAttribute(String name, Object value)

Пов’язують деякий об’єкт з іменем і зберігають його у сеансі

public void removeValue(String name)

public void removeAttribute(String name)

Видаляють значення, пов’язані із заданим іменем

public String[] getValueNames()

public Enumeration getAttributeNames()

Повертають імена усіх атрибутів сеансу

public String getId()

Повертає унікальний ідентифікатор сеансу

public Boolean isNew()

Повертає true, якщо клієнт ще не бачив даного сеансу (коли сеанс щойно створений)

public long getCreationTime()

Повертає час створення сеансу

public long getLastAccessedTime()

Повертає час останнього звернення клієнта до сеансу

public int getMaxInactiveInterval()

public void setMaxInactiveInterval(int seconds)

Відповідно повертає і встановлює кількість секунд, на протязі яких сеанс існуватиме без звернень до нього. Після цього часу сеанс автоматично стане недійсним. Від’ємне значення вказує, що для сеансу час простою не заданий

Public void invalidate()

Робить сеанс недійсним і скасовує усі зв’язки з об’єктами

Кодування адрес url, надісланих клієнту

Якщо для відслідковування сеансу використовується перезапис URL, і при цьому сервлет надсилає клієнту URL, що посилається на ваш сайт, то необхідно добавити в нього дані про сеанс явним чином. Існує два можливих місця, в яких можна задавати такі URL.

1. Місце, де URL вбудовується у web-сторінку, згенеровану сервлетом. Ця адреса повинна передаватися за допомогою методу encodeURL класу HttpServletResponse, наприклад:

String originalURL = someURL;

String encodedURL = response.encodeURL(originalURL);

out.println(“<A HREF=\”” + encodedURL + “\”> … </A>”);

2. Використання методу sendRedirect. При цьому застосовується метод encodeRedirectURL, наприклад:

String originalURL = someURL;

String encodedURL = response.encodeRedirectURL(originalURL);

Response.sendRedirect(encodedURL);

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