Пример аннотации Hello World в Struts 2
В этом руководстве он будет повторно использовать предыдущий примерStrust 2 Hello World (XML version) и преобразовать его в версию аннотации.
Концепция аннотаций Struts 2
Аннотации Struts 2 поддерживаются плагином соглашения Struts 2, поэтому вы должны понимать магию его механизмов «Scanning Methodology» и «Naming Converter».
1. Методология сканирования
Во многих статьях или книгах Struts 2 говорилось, что вы можете настроить фильтры «init-param» или «struts.convention.action.packages», чтобы указать Struts 2, где сканировать аннотированные классы. Например,
web.xml
struts2 org.apache.struts2.dispatcher.FilterDispatcher actionPackages com.example.common
Судя по моему тестированию (Struts2 версии 2.1.6 и 2.1.8), это неверно, независимо от того, что вы вставляете в «param-value» или «struts.convention.action.packages», Struts 2 просто проигнорирует это и сканировать только указанные папки с именемstruts, struts2, action or actions.
Вот как работает сканирование
-
Отсканируйте аннотированные классы, которые находятся в пакете с именем «struts, struts2, action or actions».
-
Затем отсканируйте файл, который соответствует одному из следующих критериев:
-
Реализован интерфейсcom.opensymphony.xwork2.Action.
-
Расширяет классcom.opensymphony.xwork2.ActionSupport.
-
Имя файла заканчивается на Action (например, UserAction, LoginAction).
-
Смотрите этоStruts 2 convention plugin documentation.
2. Конвертер имен
Стандартный плагин Struts 2 преобразует все аннотированные имена файлов действий в указанный формат.
Например:LoginAction.java
-
Сначала удалите слово «Действие» в конце имени файла, если оно есть.
-
Во-вторых, преобразуйте первую букву имени файла в нижний регистр.
Итак, после удаления окончания и преобразования регистра первой буквыLoginAction.action изменится наlogin.action.
Функции «методологии сканирования» и «конвертера имен» в плагине соглашения Struts 2 действительно приносят много удобств и преимуществ, только если ваш проект Struts 2 правильно следует соглашению об именах; иначе это будет полная катастрофа.
Struts 2 Пример аннотации
Пришло время начать процесс конвертации.
Окончательная структура проекта
1. Обновите pom.xml
Чтобы использовать функцию аннотации Struts 2, вам необходимо загрузитьstruts2-convention-plugin.jar.
pom.xml
...org.apache.struts struts2-core 2.1.8 ... org.apache.struts struts2-convention-plugin 2.1.8
2. LoginAction
СоздайтеLoginAction extendsActionSupport и ничего не делайте, по умолчаниюActionSupport возвращает строку «успеха», которая будет соответствовать @Result и перенаправить на «pages/login.jsp».
Версия аннотации
package com.example.user.action; import org.apache.struts2.convention.annotation.Namespace; import org.apache.struts2.convention.annotation.Result; import org.apache.struts2.convention.annotation.ResultPath; import com.opensymphony.xwork2.ActionSupport; @Namespace("/User") @ResultPath(value="/") @Result(name="success",location="pages/login.jsp") public class LoginAction extends ActionSupport{ }
Эквивалент XML
pages/login.jsp
3. WelcomeUserAction
Переопределите метод execute () и задайте аннотации @Action и @Result.
Версия аннотации
package com.example.user.action; import org.apache.struts2.convention.annotation.Action; import org.apache.struts2.convention.annotation.Namespace; import org.apache.struts2.convention.annotation.Result; import org.apache.struts2.convention.annotation.ResultPath; import com.opensymphony.xwork2.ActionSupport; @Namespace("/User") @ResultPath(value="/") public class WelcomeUserAction extends ActionSupport{ private String username; public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } @Action(value="Welcome", results={ @Result(name="success",location="pages/welcome_user.jsp") }) public String execute() { return SUCCESS; } }
Эквивалент XML
pages/welcome_user.jsp
Аннотации Struts 2 -@Action,@Result и@Namespace говорят сами за себя, вы всегда можете сравнить их с XML-эквивалентом. @ResultPath может потребовать небольшого объяснения, см. Этот@ResultPath example.
4. JSP просмотр страниц
Обычные страницы просмотра JSP принимают имя пользователя и пароль и перенаправляют на страницу приветствия после нажатия кнопки отправки.
login.jsp
Struts 2 Hello World Annotation Example
welcome_user.jsp
Struts 2 Hello World Annotation Example Hello
5. struts.xml
Не нужно создавать файл struts.xml, все классы аннотированы.
6. web.xml
Просто создайте классический файл web.xml и объявите фильтрFilterDispatcher как обычно.
Struts 2 Web Application struts2 org.apache.struts2.dispatcher.FilterDispatcher struts2 /*
7. Запустить его
LoginAction.action заменяется наlogin.action, см. «Конвертер имен» выше.
http://localhost:8080/Struts2Example/User/login.action