Фреймворк Struts 2

Framework Struts - это среда Open Source для разработки Web-приложений с помощью технологий Java Servlet and Java Server Pages (JSP). Struts способствует разработке приложений с архитектурой, базирующейся на парадигме Model-View-Controller, известной как Model 2. Cледующие составные части фреймворка и их функции определены в Struts :

  1. Сервлет-контролер (controller servlet) координирует запросы к соответствующим классам-действиям (action), созданным разработчиками приложения.
  2. Библиотеки JSP тэгов поддерживаются сервлетом-контроллером, что помогает разработчикам в создании интерактивных Web-приложений, основанных на шаблонах.
  3. Вспомогательные классы для поддержки разбора (parsing) XML, автоматического управления свойствами JavaBeans класса-действия, и интернационализации сообщений и запросов.

Дистрибутив Struts

Официальный сайт Struts - http://jakarta.apache.org/struts. Struts является частью проекта Jakarta, поддерживаемого Apache Software Foundation.

В дистрибутив 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

Основой 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-страниц в само приложение. Если ошибка была и она обработана, компонент контроля обращается к специальному компоненту представления, ответственному за показ ошибок, а не к компоненту представления, отображающему "нормaльные" данные. Это значительно упрощает логику в страницах, и облегчает их разработку и обслуживание.

Компоненты контроллера в Struts2 являются Java-классами, и должны быть созданы по определенным правилам, т.е. наследовать свойства родительского класса и следовать правилам фреймворка. В контексте Struts их обычно называют "Action classes." Действия - это основной элемент построения приложения с использованием Struts2. В них может храниться логика приложения, вызов сервисов, обращение к БД и т.д. В результате выполнения действия возвращается строковый код результата, который определяет дальнейшее выполнение запроса пользователя.

Библиотеки Struts

Struts2, как и любой фреймворк, представляет из себя набор Java библиотек, которые необходимо добавить в WEB приложение.

Минимальный набор требуемых библиотек Struts2

БиблиотекаОписание
struts2-core*.jarядро Struts2
xwork-*.jarфреймворк построен на базе XWork
ognl*.jarиспользуется в качестве языка выражений OGNL
freemarker*.jarкастом теги JSP написаны на freemarker
commons-fileupload-*.jarбиблиотека загрузки файлов
commons-io-*.jarбиблиотека для работы с операциями ввода вывода
commons-logging-*.jarбиблиотека для протоколирования

Примечание : в описании actions, interceptors, validate, localization, session, example можно скачать рассмотренные примеры, включающие минимальный нобор библиотек фреймворка Struts2.

Если для работы WEB приложения появится необходимость работать с формой, то необходимо еще установить библиотеку commons-beanutil-*.jar и oro_*.jar для работы с регулярными выражениями. При работе с шаблонами страницы не обойтись без библиотек struts-tiles-*.jar, tiles-*.jar.

Таким образом функциональные свойства WEB приложения определяют пакет используемых библиотек. Все библиотеки фреймворков в WEB приложении располагаются в директории WEB-INF/lib.

Скачать фреймворк Struts2 можно здесь.

  Рейтинг@Mail.ru