Фреймворк Stuts2

Фреймворк Stuts2 - это среда Open Source для разработки Web-приложений с помощью технологий Java Servlet and Java Server Pages (JSP). Struts - это действие ориентированный фреймворк, и действие является его "сердцем". Действия в Struts2 выполняют три функции:
  • инкапсулируют выполнение текущей работы для обработки пришедшего от клиента запроса;
  • обеспечивают получение, обработку и трансформацию данных от запроса к представлению;
  • содействуют фреймворку в определении результата, который необходимо вернуть клиенту.
Struts2 способствует разработке приложений с архитектурой, базирующейся на парадигме Model-View-Controller, известной как Model 2. Cледующие составные части фреймворка и их функции определены в Struts2 :
  1. Сервлет-контролер (controller servlet) координирует запросы к соответствующим классам-действиям (action), созданным разработчиками приложения.
  2. Библиотеки JSP тэгов поддерживаются сервлетом-контроллером, что помогает разработчикам в создании интерактивных Web-приложений, основанных на формах.
  3. Вспомогательные классы для поддержки разбора (parsing) XML, автоматического управления свойствами JavaBeans класса-действия, и интернационализации сообщений и запросов.
При использовании шаблона MVC, обработка разбивается на три различных части, а именно на Модель(Model), компоненты представления(View), и контроллер (Controller).

Модель (Model)

Компоненты моделей предоставляют "модель" для бизнес-логики или данные для Struts программы. Например, в Struts приложении, которое управляет данными клиентов, возможно было бы выгодно создать компонент модели "Customer", который бы предоставлял программе доступ к информации о клиентах.

Очень часто компоненты моделей обеспечивают интерфейс к базам данных или back-end системам. Например, если Struts приложению нужен доступ к данным сотрудников хранящимся в Enterprise системе отдела кадров, то возможно подходящей техникой было бы спроектировать модель "Employee", которая выполняла роль интерфейса между Struts приложением и системой отдела кадров.

Компоненты моделей, как правило, являются стандартными Java классами. Для моделей не требуется специального формата, поэтому можно использовать код написанный для других проектов.

Компоненты представления (View components)

Компоненты представления - это те части приложения, которые отвечают за презентацию информации и ее прием от пользователя. В Struts компоненты представления соответствуют Веб-страницам.

Компоненты представления используются для представления информации хранящейся в моделях. Например, модель "Customer" которую мы обсуждали выше, нуждается в компоненте представления, которая бы презентировала данные этой модели. Обычно для каждой Веб-страницы в Struts приложении имеется один или более компонент представления.

Компоненты представления создаются при помощи JavaServer Pages (JSP). Struts предлагает разработчику большое количество "JSP Custom Tags" (иногда называемых Struts Tags) которые расширяют обычные возможности JSP и упрощают разработку компонентов представления.

Компоненты контроля (Controller components)

Компоненты контроля координируют деятельность в приложении. Имеется ввиду, например, прием данных от пользователя и обновление базы данных с помощью компонента модели или обнаружение ошибки back-end системой и ее обработка. Контроллер принимает данные от пользователей, принимает решение о том какие компоненты моделей должны быть обновлены и выбирает компоненты представления, которым посылается сообщение сигнализурующее о необходимости демонстрации обновленных результатов.

Одно из главных преимуществ компонент контроля состоит том, что они позволяют разработчику перенести код занимающийся обработкой ошибок из JSP-страниц в само приложение. (После того как ошибка обработана, компонент контроля обращается к специальному компоненту представления ответственному за показ ошибок, а не к компоненту представления показывающему "нормaльные" данные). Это может значительно упростить логику в страницах и облегчить их разработку и обслуживание.

Компоненты контроля в Struts являются Java классами и должны быть созданы по определенным правилам. В контексте Struts их обычно называют "Action classes." Контроллер выполняет одну из функций сервлетного фильтра, которая заключается в перехвате пришедшего от клиента запроса и анализе текста на предмет наличия расширения .action. Расширение .action используется фреймворком по умолчанию. Для версии Struts1 по умолчанию использовалось расширение URL .do.

Расширение URL, по которому Struts2 будет перехватывать обращение к серверу, можно изменить или вообще убрать. Если в запросе присутствует расширение .action, то фреймворк Struts2 приступает к обработке запроса и вызывает соответствующее действие на исполнение. Внешний файл конфигурации фреймворка типа XML содержит описание связей между поступающими от браузера запросами и соответствующими действиями. В качестве контроллера выступает класс фреймворка FilterDispatcher.

Как получить Struts2

Официальный сайт Struts - http://jakarta.apache.org/struts. Struts2 является частью проекта Jakarta, поддерживаемого Apache Software Foundation. В дистрибутив Struts2 включен Users Guide, который кратко описывает архитектуру Model-View-Controller, как она соотносится с основными компонентами Struts2. Несколько руководств разработчика (Developer Guides) включено в дистрибутив чтобы, помочь начать работу с расширенными библиотеками тэгов Struts2 и со вспомогательными утилитами.

Документация Struts2

Единственной абсолютно истинной документацией является сам исходный код Struts2, который может быть использован. Чтобы получить полный корректный код для всей среды Struts2, необходимо смотреть каталог "src" в Struts source distribution. Страница ресурсов Struts Resources содержит ссылки на все, что написано о Struts, включая статьи, книги и примеры приложений. Также, она содержит ссылки на сайты, которые используют Struts ("Powered by Struts").

Релиз (production release) Struts2 можно получить как в виде удобного дистрибутива с полными исходными кодами, так и без них. Помимо этого, доступен дистрибутив в виде библиотеки (library distribution), который содержит самые последние бинарники Struts2 без примеров приложений, что позволяет быстро загружать ее.

В качестве дополнительного пособия по изучению фреймворка Struts2 можно использовать книги "Struts2 in Action" и "Starting Struts2".