Struts 2 Hello Worldアノテーションの例

Struts 2 Hello Worldアノテーションの例

このチュートリアルでは、前のStrust 2 Hello World (XML version)の例を再利用し、注釈バージョンに変換します。

Struts 2アノテーションコンセプト

Struts 2アノテーションは、Struts 2コンベンションプラグインでサポートされているため、「Scanning Methodology」および「Naming Converter」メカニズムの背後にある魔法を理解する必要があります。

1. スキャン方法

多くのStruts2の記事または本では、フィルターの「init-param」または「struts.convention.action.packages」を構成して、注釈付きクラスをスキャンする場所をStruts2に指示できると述べています。 例えば、

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」に何を入力しても、Struts2はそれを無視します。 struts, struts2, action or actionsという名前の指定されたフォルダーのみをスキャンします。

スキャンの仕組みは次のとおりです

  1. struts, struts2, action or actions」という名前のパッケージにある注釈付きクラスをスキャンします。

  2. 次に、次の条件のいずれかに一致するファイルをスキャンします。

    • com.opensymphony.xwork2.Actionインターフェースを実装しました。

    • com.opensymphony.xwork2.ActionSupportクラスを拡張します。

    • ファイル名はアクションで終わります(例:UserAction、LoginAction)。

このStruts 2 convention plugin documentationを参照してください。

2. 命名コンバーター

Struts 2コンベンションプラグインは、すべての注釈付きアクションファイル名を指定された形式に変換します。

例:LoginAction.java

  1. まず、ファイル名の最後にある「アクション」という単語があれば、それを削除します。

  2. 次に、ファイル名の最初の文字を小文字に変換します。

したがって、末尾を削除して最初の文字の大文字と小文字を変換すると、LoginAction.actionlogin.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を作成してActionSupportを拡張し、何もしません。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.actionlogin.actionに変更されます。上記の「ネーミングコンバーター」を参照してください。
http://localhost:8080/Struts2Example/User/login.action

Struts 2 annotation login screen

Struts 2 annotation welcome screen