- •Основні відомості про сервлети і JavaServer Pages
- •Базова структура сервлетів
- •Життєвий цикл сервлета
- •Метод init
- •Метод service
- •Інтерфейс SingleThreadModel
- •Метод destroy
- •Обробка клієнтських запитів
- •Заголовки http-запиту
- •Коди станів http
- •Заголовки http-відповіді
- •Обробка cookies
- •Атрибути cookie
- •Відслідкування сеансу
- •Отримання інформації про сеанс
- •Перегляд інформації про сеанс
- •Кодування адрес url, надісланих клієнту
- •Елементи сценарію jsp
- •Вирази jsp
- •Скриплети jsp
- •Оголошення jsp
- •Інші наперед визначенізмінні
- •Директива сторінки jsp
- •Включення файлів і аплетів у документи jsp
- •Використання JavaBeans з jsp
- •Основи використання bean-компонентів
- •Доступ до властивостей bean-компонентів
- •Сумісне використання bean-компонентів
- •Робота з базами даних
- •Завантаження тареєстрація драйвера
- •Визначення url для встановлення з’єднання
- •Встановлення з’єднання
- •Створення об’єкту для передачі операторів sql
- •Формування запиту для виконання
- •Виконання запиту
- •Обробка результатів
- •Завершення з’єднання
- •Попередньо відкомпільовані (підготовлені) запити
- •Пакетне виконання sql запитів
- •Виконання внутрішніх процедур
- •Інтегрування сервлетів і jsp-сторінок Перенаправлення запитів із сервлетів
- •Передача інформації на сторінки призначення
- •Перенаправлення запитів з jsp-сторінок
- •Використання аплетів у якості клієнтських інтерфейсів сервлетів
Отримання інформації про сеанс
Об’єкт класу 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);