Пример аннотации Hello World в Struts 2

Пример аннотации 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.

Вот как работает сканирование

  1. Отсканируйте аннотированные классы, которые находятся в пакете с именем «struts, struts2, action or actions».

  2. Затем отсканируйте файл, который соответствует одному из следующих критериев:

    • Реализован интерфейсcom.opensymphony.xwork2.Action.

    • Расширяет классcom.opensymphony.xwork2.ActionSupport.

    • Имя файла заканчивается на Action (например, UserAction, LoginAction).

2. Конвертер имен

Стандартный плагин Struts 2 преобразует все аннотированные имена файлов действий в указанный формат.

Например:LoginAction.java

  1. Сначала удалите слово «Действие» в конце имени файла, если оно есть.

  2. Во-вторых, преобразуйте первую букву имени файла в нижний регистр.

Итак, после удаления окончания и преобразования регистра первой буквыLoginAction.action изменится наlogin.action.

Функции «методологии сканирования» и «конвертера имен» в плагине соглашения Struts 2 действительно приносят много удобств и преимуществ, только если ваш проект Struts 2 правильно следует соглашению об именах; иначе это будет полная катастрофа.

Struts 2 Пример аннотации

Пришло время начать процесс конвертации.

Окончательная структура проекта

Struts2 hello world annotation

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

Struts 2 annotation login screen

Struts 2 annotation welcome screen