Використання сесій

Об'єкт сесії в WEB-додатку має важливе значення. При використанні фреймворка Struts2 можна використовувати сесію інтерфейсу ServletRequest, який розширюється інтерфейсом HttpServletRequest. Метод getSession (boolean create) даного інтерфейсу повертає об'єкт типу HttpSession поточного сеансу клієнта. Якщо параметр create дорівнює true і об'єкт HttpSession не існує, то створюється новий об'єкт HttpSession.

інтерфейс SessionAware

Незважаючи на можливість використання сесії інтерфейсу HttpSession необхідно все ж використовувати об'єкт сесії фреймворка. Для цього необхідно створити дію, яке успадковує інтерфейс SessionAware. Інтерфейс SessionAware містить метод setSession, який відкриває нам доступ до сесії фреймворка. Параметром методу setSession є об'єкт типу Map. Таким чином, визначивши в дії об'єкт типу Map, ми можемо пов'язати його з сесією фреймворка. Після цього, сесію можна використовувати для обміну об'єктами між різними діями.

Приклад використання SessionAware в Struts2 додатку

У додатку створимо дію LoginAction.java. Основна функція даного action полягатиме в тому, щоб перевірити заповнення текстових полів сторінки index.jsp. Якщо користувач заповнить текстові поля, то метод execute () розмістить об'єкт User в сесії і поверне строкове значення "success", якщо не заповнить - то "error". Залежно від результату дії фреймворк буде відкривати або сторінку success.jsp, або error.jsp.

На наступному скріншоті представлена ​​структура проекту StrutsSession.

Використання сесій

На сторінці дескриптор додатки web.xml не описується. Лістинг web.xml можна побачити на сторінці Приклад Struts2. де розглядається питання кодування переданих сервера повідомлень.

Лістинг action классa LoginAction.java

Дія LoginAction переопределяет функцію execute. Як тільки буде звернення до цього дійства Struts2 відразу ж викличе його метод execute, який перевірить поля "userName" і "password", і, в залежності від стану, поверне або "success", або "error".

На сторінці перевірки даних показано, як використовувати метод validate () для перевірки введених даних користувача.

Фреймворк викликає метод setSession. в якому ми визначаємо нашу змінну session. Якщо поля "userName" і "password" будуть заповнені, то метод створить об'єкт User і розмістить його в сесії session. Структура об'єкта User наводиться в наступному лістингу.

Об'єкт користувача User.java

Лістинг JSP-сторінки index.jsp

На цій сторінці оператор повинен ввести "Логін", "Пароль" і натиснути кнопку Submit. При натисканні на кнопку серверу передається інформація сторінки (userName, password) і викликається дію "login".

В рядку <%@ taglib uri="/struts-tags" prefix="s" %> підключаються теги Struts2. після чого звернення до об'єктів фреймворка проводиться через префікс "s". У тілі сторінки визначено декілька тегів Struts2. У першому тезі форми визначається дія action = "private / login", що відповідає за обробку даних. Далі в тілі форми встановлені текстові поля "userName" і "password". При натисканні на кнопку управління передається серверу і викликається дію login.

Слід зазначити, що дія розташовується в "закритій області" namespace (private).

Інтерфейс сторінки представлений на наступному скріншоті.

Використання сесій

Файл конфігурації struts.xml

Підключення дії здійснюється в файлі конфігурації struts.xml. в якому необхідно визначити зв'язок сторінки index.jsp з дією "login".

У файлі конфігурації визначено, що дія "login" пов'язано з класом example.LoginAction. Залежно від результату (result) виконання дії буде відкрита або сторінка private / success.jsp, або error.jsp. У файлі конфігурації ми визначили, що дія login розташовується в закритій області (namespace) private.

Лістинг сторінки success.jsp

У разі успішного виконання дії "private / login" сервер відкриє сторінку success.jsp, інтерфейс якої представлений на наступному скріншоті.

Використання сесій

Сторінка success.jsp використовує тільки теги JSP для відображення об'єкта User. Спочатку необхідно цей об'єкт імпортувати на сторінку, після чого витягти його з сесії.

Лістинг сторінки error.jsp

Сторінка помилки error.jsp виконує тільки одну функцію - повідомляє користувачеві, що одне з полів залишилося не заповнено.

Використання сесій

Тексти програм розглянутого прикладу можна скачати тут (5.20 Мб).

Схожі статті