Если вам нужна среда Java, которая поможет быстро и эффективно разрабатывать веб-приложения JEE, то Struts 2 — идеальное решение. Это фреймворк с открытым исходным кодом, который широко используется на рынке.
Что такое Struts в Java?
Struts — это среда с открытым кодом на основе Java, которая помогает в разработке веб-приложений на J2EE. Расширяет API сервлетов и продвигает архитектуру модели, представления, контроллера (MVC). Это делает веб-приложения, разработанные с использованием стандартных технологий, таких как JSP, JavaBeans и XML, более удобными в обслуживании, расширяемыми и гибкими.
Struts Framework был первоначально разработан Крейгом МакКланаханом и передан Apache Foundation в мае 2000 года. Постепенно он занял позицию проекта Apache верхнего уровня в 2005 году, а позже, в феврале 2007 года, его заменил Struts 2.
Struts Framework во многом основывается на парадигме проектирования MVC (модель-представление-контроллер). Его основная цель состояла в том, чтобы отделить модель от представления и контроллера в приложении, чтобы уменьшить зависимость и способствовать разделению проблем (SoC).
Другими словами, это помогло отделить логику приложения, в основном взаимодействующую с базой данных, от HTML-страниц, через которые пользователь взаимодействует с приложением, и экземпляра, помогающего в передаче информации между моделью и представлением.
Особенности
Здесь XHTML — это тема по умолчанию для Struts 2, которая в основном используется для общего внешнего вида.
Архитектура

Пошаговый рабочий процесс, описывающий, как работают Struts:
- Он начинается с запроса пользователя, который отправляется на сервер для запроса некоторого ресурса.
- Затем этот запрос обрабатывается диспетчером фильтров для определения соответствующего действия.
- Затем к запросу применяются правильно настроенные функции перехватчика, такие как проверка, загрузка файла и т. д.
- После того, как выбранное действие принято и оно выполняется на основе запрошенной операции.
- В случае, если требуется постобработка, вызываются настроенные перехватчики.
- В конце концов, результат предоставляется представлением и возвращается пользователю.
Настройка среды
Основные вещи, необходимые для начала работы со Struts 2:
- Java.
- Tomcat.
- IDE (предпочтительно Eclipse).
Основные концепции
1. Конфигурации
В любом приложении struts есть два основных файла конфигурации:
- Файл struts.xml: содержит информацию о конфигурации, которая изменяется как действия. В основном он используется для переопределения настроек по умолчанию в приложении. Этот файл обычно создается в каталоге WEB-INF / classes в любом проекте Struts.
- Файл struts.properties: предоставляет механизм, который может изменять поведение платформы. Поскольку фреймворк использует ряд свойств, вы можете изменить любое из них в соответствии с вашими требованиями.
2. Действия
Действия или классы действий являются основными концепциями в любом приложении Struts 2, поскольку они действуют как контроллер в шаблоне MVC. Другими словами, классы действий содержат бизнес-логику, которая помогает в обработке данных. Помимо этого, класс действий также отвечает за ответ на запрос пользователя, выполняя бизнес-логику. Это также помогает платформе определять и возвращать результат на основе файла конфигурации (struts.xml) обратно пользователю для визуализации страницы просмотра.
Классы действий Stuts2 не являются одноэлементными по своей природе, т.е. один экземпляр этого класса будет создаваться с каждым запросом. Таким образом, они не должны быть потокобезопасными, а быть простыми и независимыми. Это значительно упрощает тестирование этих классов.
Файл действия можно создать тремя способами, а именно:
- Простой класс действия.
Любой конкретный класс java может использоваться как класс действия Struts 2, но единственное требование состоит в том, что класс должен содержать метод execute() с возвращаемым типом String. Ниже приведен код для создания простого класса действий:
package com.edureka.struts2.action;
public class DemoAction {
public String execute(){
return "Welcome!";
}
}
- Реализация интерфейса Action.
Класс Struts 2 Action также может быть создан путем реализации интерфейса com.opensymphony.xwork2.Action. Он содержит единственный метод, то есть execute(), который должен быть реализован классом реализации. Реализуя этот интерфейс, вы можете использовать несколько констант, таких как SUCCESS, ERROR, NONE, INPUT и LOGIN, которые можно использовать для страниц результатов. Ниже приведен пример того же кода:
package com.edureka.struts2.action;
import com.opensymphony.xwork2.Action;
public class DemoAction implements Action{
public String execute(){
return SUCCESS;
}
}
- Расширение класса ActionSupport.
Классы действий в Struts 2 обычно расширяют класс Action Support, который является реализацией интерфейса Action по умолчанию. Он предоставляет различные обязательные функции для разработки веб-приложений, такие как проверка данных, сообщение уровня действия, сообщение об ошибке уровня действия, сообщение об ошибке на уровне поля и чтение связанного ресурса и т. д.
package com.edureka.struts2.action;
import com.opensymphony.xwork2.ActionSupport;
public class DemoAction extends ActionSupport
{
@Override
public String execute() throws Exception {
return SUCCESS;
}
}
3. Перехватчики
Перехватчик выступает в качестве одного из основных столпов структуры Struts 2. Это не что иное, как объект, который вызывается во время предварительной и постобработки запроса. Это помогает контролировать и поддерживать плавный переход цикла запроса и ответа.
Основное преимущество использования перехватчиков в том, что они подключаемые. Я имею в виду, что если вы больше не пользуетесь какой-либо конкретной проблемой, такой как проверка, обработка исключений, ведение журнала и т. Д., Вы можете легко удалить ее из приложения без необходимости повторного развертывания. Для этого все, что вам нужно сделать, это удалить запись из файла struts.xml.
Фреймворк Struts2 предоставляет исчерпывающий набор предопределенных перехватчиков и общих стеков перехватчиков, которые я перечислил в следующей таблице:
| Перехватчик | Описание |
|---|---|
| alias | позволяет параметрам иметь разные псевдонимы имен в зависимости от пользовательских запросов |
| checkbox | помогает в управлении флажками, добавляя значение параметра false, если флажки не были отмечены |
| conversionError | помещает информацию об ошибке преобразования строк в типы параметров в ошибки поля действия |
| createSession | неявно создает HTTP-сеанс, если он не существует |
| debugging | предоставляет разработчику различные экраны отладки |
| execAndWait | переводит пользователя на промежуточную страницу ожидания, когда действие выполняется в фоновом режиме |
| exception | cопоставляет исключения, которые выбрасываются из действия, с результатом |
| fileUpload | упрощает загрузку файлов в Struts 2 |
| i18n | помогает отслеживать указанный языковой стандарт во время сеанса пользователя |
| logger | обеспечивает простую регистрацию для пользователя, генерируя вывод в виде имени выполняемого действия |
| params | помогает в настройке параметров запроса для действия |
| prepare | используется для выполнения предварительной обработки |
| profile | позволяет упростить профилирование информации для регистрации действий |
| scope | cохраняет и извлекает состояние действия во время пользовательского сеанса или области приложения |
| ServletConfig | предоставляет возможность действия для доступа к различной информации на основе сервлетов. |
| timer | предоставляет простую информацию о профиле |
| token | помогает в проверке действия для действительного токена, чтобы предотвратить дублирование отправки формы |
| validation | обеспечивает поддержку валидации для различных действий |
4. Стек ценностей
ValueStack в платформе Struts2 — это область хранения, в которой хранятся все данные приложения для обработки запроса. Эти данные хранятся в объектах ActionContext, которые используют ThreadLocal для извлечения значений, специфичных для любого конкретного потока клиентского запроса.
5. OGNL
OGNL расшифровывается как Object-Graph Navigation Language. Это мощный язык выражений, очень похожий на JSP, который в основном используется для справки и управления данными, присутствующими в ValueStack. Кроме того, он также помогает в передаче и преобразовании типа данных.
Подобно JSP, OGNL содержит корневой объект в контексте приложения. Таким образом, вы можете предоставить ссылку на объект по умолчанию, используя нотацию разметки, которая в данном случае обозначается символом решетки. Платформа Struts 2 реализует OGNL путем создания карты ActionContext.
Компоненты карты ActionContext:
- Заявка.
- Сессия.
- Стек значений.
- Запрос.
- Параметры.
- Атрибуты.
Пример создания приложения
Здесь создадим простое приложение, в котором нужно будет ввести свое имя, и приложение будет приветствовать вас. Ниже приведен снимок экрана с полной структурой проекта:

Как видите, в этом проекте мы создадим 5 файлов:
- HelloWorld.java.
- index.jsp.
- welcome.jsp.
- web.xml.
- struts.xml.
Примечание. Перед тем, как начать этот проект, убедитесь, что в вашей системе уже установлен Tomcat.
ШАГ 1
В Eclipse перейдите в Файл> Создать> Динамический веб-проект. Введите имя проекта и нажмите New Runtime.

ШАГ 2
Здесь вам нужно выбрать версию Apache Tomcat, которую вы загрузили в свою систему, и нажать «Далее».
ШАГ 3
Затем нажмите «Обзор» и перейдите в каталог, где были сохранены зависимости Tomcat. После этого нажмите «Готово» и продолжите создание проекта.

ШАГ 4
Теперь добавим файлы jar Struts, которые потребуются для успешного выполнения этого проекта. Когда вы будете готовы с файлами JAR, скопируйте файлы JAR и вставьте их в WebContent> WEB-INF> lib.
ШАГ 5
Теперь, когда мы готовы со всеми конфигурациями, давайте настроим файлы кода, начиная с HelloWorld.java. Для этого щелкните правой кнопкой мыши проект> Создать> Класс. Введите название пакета и класса и нажмите «Готово».

ШАГ 6
Введите приведенный ниже код в файл HelloWorld.java.
package com.edureka;
public class HelloWorld {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String execute() {
return "success";
}
}
ШАГ 7
Затем создайте новый файл index.jsp в WebContent и введите следующий код:
<%@ taglib prefix="s" uri="/struts-tags" %> <s:form action="verify"> <s:textfield name="name" label="Enter Username" /> <s:submit value="Click" align="center" /> </s:form>
ШАГ 8
Теперь снова создайте новый файл welcome.jsp в WebContent и введите следующий код:
<%@ taglib prefix="s" uri="/struts-tags" %> Welcome: <s:property value = "name"/>
ШАГ 9
Теперь перейдите в WebContent> WEB-INF и введите приведенный ниже код в файл web.xml.
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
<display-name>Struts2Demo</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareandExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
ШАГ 10
Наконец, в разделе Ресурсы Java> src создайте файл struts.xml
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd"> <struts> <package name = "default" extends = "struts-default"> <action name = "verify" class = "com.edureka.HelloWorld"> <result name = "success">welcome.jsp</result> </action> </package> </struts>
ШАГ 11
Теперь перейдите на страницу index.jsp и щелкните ее правой кнопкой мыши. Выберите «Выполнить на сервере», чтобы запустить приложение.

