Фреймворк struts 2
Framework Struts - це середовище Open Source для розробки Web-додатків за допомогою технологій Java Servlet and Java Server Pages (JSP). Struts сприяє розробці додатків з архітектурою, що базується на парадигмі Model-View-Controller, відомої як Model 2. Спостерігає складові частини фреймворка і їх функції визначені в Struts:
- Сервлет-контролер (controller servlet) координує запити до відповідних класів-діям (action), створеним розробниками програми.
- Бібліотеки JSP тегів підтримуються сервлетом-контролером, що допомагає розробникам у створенні інтерактивних Web-додатків, заснованих на шаблонах.
- Допоміжні класи для підтримки розбору (parsing) XML, автоматичного керування властивостями JavaBeans класу-дії, і інтернаціоналізації повідомлень і запитів.
дистрибутив Struts
У дистрибутив Struts включений Users Guide, який коротко описує архітектуру Model-View-Controller, як вона співвідноситься з основними компонентами Struts. Кілька посібників розробника (Developer Guides) включено в дистрибутив, щоб допомогти почати роботу з розширеними бібліотеками тегів Struts і з допоміжними утилітами.
документація Struts
Єдиною абсолютно істинної документацією є сам вихідний код Struts. який може бути використаний. Щоб отримати повний коректний код для всієї середовища Struts, необхідно дивитися каталог "src" в Struts source distribution. Сторінка ресурсів Struts Resources містить посилання на все, що написано про Struts, включаючи статті, книги та приклади додатків. Також, вона містить посилання на сайти, які використовують Struts ( "Powered by Struts").
Останню версію (production release) Struts2 можна отримати як у вигляді зручного дистрибутива з повними вихідними кодами, так і без них. Крім цього, доступний дистрибутив у вигляді бібліотеки (library distribution), що дозволяє швидко завантажувати її.
Архітектура Struts 2
Struts 2 - це каркас для розробки WEB-додатків, який створений і використовується разом з популярною платформою J2EE (Java 2, Enterprise Edition). Даний фреймворк вкорочує час розробки і робить розробників більш продуктивними, забезпечуючи їх набором інструментів і компонент для створення додатків. Каркас визначається в словнику, як "структура для підтримки і оточення чого-небудь іншого.". Це визначення виключно точно описує Struts2 - сукупність Java-коду у вигляді набору бібліотек, спроектованих для того, щоб допомогти створювати надійні додатки з економією часу.
Архітектура Struts2 представлена на малюнку.
Основою Struts2 є Model-View-Controller
Struts2 спирається на шаблон проектування Model-View-Controller (MVC). Шаблон MVC широко визнаний, як один з найбільш добре розроблених і зрілих шаблонів проектування, які використовуються в даний час. При використанні шаблону MVC, обробка розбивається на три різні частини, а саме на контролер (Controller), модель (Model) і компоненти уявлення (View).
Фільтр FilterDispatcher
Всі запити Struts2 спочатку повинні потрапити на обробку в фільтр FilterDispatcher. який визначає приналежність запиту (HttpRequest) користувача до додатка і вибирає відповідне йому дію. Якщо FilterDispatcher виявляє, що необхідно попередньо виконати певні "операції" перехоплювачами (Interceptors), то управління передається даними Interceptor'ам. і за їх результатами яких викликається відповідна дія. або викликається форма обробки помилок, тобто викидається виключення.
FilterDispatcher підключається в файлі дескриптора додатка web.xml.
Примітка. в останніх версіях Struts2 використовується StrutsPrepareAndExecuteFilter. Приклади на сторінках actions, interceptors, validate, session, localization, example використовують фреймворк struts2-core-2.5-BETA3.jar.
Перехоплювачі в Struts2
Перехоплювачі - це новинка в Struts2. Вони можуть виконувати величезний обсяг роботи: розбір параметрів запиту, завантаження вихідних даних, обробку винятків, перевірку коректності даних. Перехоплювачі є для дій в Struts2 тим же, чим фільтри для сервлетів.
Перехоплювачі є Java-класи, успадковують (implements) властивості класу Interceptor. Підключаються перехоплювачі до WEB-додатку на рівні файлу конфігурації struts.xml
Компоненти моделі Model
Компоненти моделей надають "модель" для бізнес-логіки або дані для Struts2 програми. Наприклад, в Struts2 додатку, яке управляє даними клієнтів, можливо було б вигідно створити компонент моделі "Customer", який би надавав програмі доступ до інформації про клієнтів.
Дуже часто компоненти моделей забезпечують інтерфейс до баз даних або back-end систем. Наприклад, якщо Struts2 додатком потрібен доступ до даних співробітників зберігаються в системі відділу кадрів, то необхідно спроектувати модель "Employee" так, щоб вона виконувала б роль інтерфейсу між Struts2 додатком і системою відділу кадрів.
Компоненти моделей, як правило, є стандартними Java-класами. Для моделей не потрібно спеціального формату, тому можна використовувати код, написаний для інших проектів.
Компоненти уявлення View
Компоненти уявлення View - це ті частини програми, які відповідають за презентацію інформації та її прийом від користувача. У Struts2 компоненти уявлення відповідають WEB-сторінок. Компоненти уявлення використовуються для представлення інформації, що зберігається в моделях. Наприклад, модель "Customer", яку ми обговорювали вище, потребує компоненті уявлення, яка б відображала дані цієї моделі. Зазвичай для кожної Веб-сторінки в Struts2 додатку є не менше одного компонента уявлення.
Компоненти уявлення створюються за допомогою сторінок Java Server Pages (JSP). Struts2 пропонує розробнику велика кількість "JSP Custom Tags" (іноді званих Struts Tags), які розширюють звичайні можливості JSP і спрощують розробку компонентів уявлення.
Struts2 підтримує різні варіанти View компонентів. Це можуть бути не тільки JSP-сторінки, але і Velocity або Freemarker шаблони. Також Struts2 підтримує бібліотеки побудови інтерфейсу форм на основі шаблонів Tiles.
Компоненти контролера Controller
Компоненти контролера координують діяльність WEB-додатки. Під контролером розуміється модуль прийому даних від користувача і оновлення бази даних за допомогою компонента моделі, або виявлення помилки back-end системою і її обробка. Контролер приймає дані від користувачів, приймає рішення про те, які компоненти моделей повинні бути оновлені, вибирає компоненти уявлення, яким надсилається повідомлення, сігналізурующее про необхідність демонстрації оновлених результатів.
Одне з головних переваг компонента контролера полягає тому, що вони дозволяють розробнику перенести код, який займається обробкою помилок, з JSP-сторінок в сам додаток. Якщо помилка була і вона оброблена, компонент контролю звертається до спеціального компоненту уявлення, відповідального за показ помилок, а не до компоненту уявлення, що відображає "нормальній" дані. Це значно спрощує логіку в сторінках, і полегшує їх розробку і обслуговування.
Компоненти контролера в Struts2 є Java-класами, і повинні бути створені за певними правилами, тобто успадковувати властивості батьківського класу і слідувати правилам фреймворка. В контексті Struts їх зазвичай називають "Action classes." Дії - це основний елемент побудови програми з використанням Struts2. У них може зберігатися логіка програми, виклик сервісів, звернення до БД і т.д. В результаті виконання дії повертається строковий код результату, який визначає подальше виконання запиту користувача.
Struts2. як і будь-який фреймворк, представляє з себе набір Java бібліотек, які необхідно додати в WEB додаток.