Введение

Фреймворк веб-приложений с открытым исходным кодом – преемник Apache Struts 1. Apache Struts 1 – это фреймворк веб-приложений с открытым исходным кодом для разработки веб-приложений Java EE. Он использует и расширяет Java Servlet API, чтобы стимулировать разработчиков к использованию архитектуры «модель-представление-контроллер» (MVC). Он был первоначально создан Крейгом Маккланаханом и передан в Apache Foundation в мае 2000 года. Ранее входивший в проект Apache Jakarta и известный как Jakarta Struts, он стал самостоятельным проектом Apache в 2005 году. Фреймворк WebWork выделился из Apache Struts с целью предложить улучшения и доработки, сохраняя при этом общую архитектуру оригинального фреймворка Struts. Однако в декабре 2005 года было объявлено о воссоединении Struts и WebWork. WebWork 2.2 был принят как Apache Struts 2, первая полная версия которого вышла в феврале 2007 года. Помимо текущей и постоянно развивающейся версии-преемника Struts 2, с 2022 года существует клон Struts 1, который обновляет устаревший фреймворк Struts 1 до современного стека, совместимого с Jakarta EE.

Цели проектирования и обзор

В стандартном веб-приложении Java EE клиент обычно обращается к серверу через веб-форму. Затем информация передается Java Servlet, который взаимодействует с базой данных и генерирует HTML-ответ, или передается в JavaServer Pages (JSP), который смешивает HTML и Java-код для достижения того же результата. Оба подхода часто считаются недостаточными для крупных проектов, поскольку они смешивают логику приложения с представлением и усложняют поддержку. Цель Struts – разделить модель (логику приложения, взаимодействующую с базой данных) от представления (HTML-страниц, отображаемых клиенту) и контроллера (компонента, передающего информацию между представлением и моделью). Struts предоставляет контроллер (сервлет, известный как ActionServlet) и упрощает создание шаблонов для слоя представления (обычно в JSP, но также поддерживаются XML/XSLT и Velocity). Разработчик веб-приложения отвечает за написание кода модели и создание центрального конфигурационного файла struts-config.xml, который связывает модель, представление и контроллер. Запросы от клиента отправляются контроллеру в виде "действий", определенных в конфигурационном файле; если контроллер получает такой запрос, он вызывает соответствующий Action-класс, который взаимодействует с кодом модели, специфичным для приложения. Код модели возвращает "ActionForward" – строку, указывающую контроллеру, какую страницу вывода отправить клиенту. Информация передается между моделью и представлением в виде специальных JavaBeans. Мощная библиотека пользовательских тегов позволяет слою представления читать и записывать содержимое этих JavaBeans без необходимости использования встроенного Java-кода. Struts классифицируется как веб-фреймворк, основанный на запросах модели 2. Struts также поддерживает интернационализацию веб-форм и включает механизм шаблонов под названием "Tiles", который, например, позволяет составлять слой представления из независимых компонентов: заголовка, нижнего колонтитула, навигационного меню и контента.