このチュートリアルでは、以前のリンク://struts2/struts-2-hello-world-example/[Strust 2 Hello World(XMLバージョン)]の例を再利用し、注釈バージョンに変換します。

ダウンロード – リンク://wp-content/uploads/2010/06/Struts2-Hello-World-Annotation-Example.zip[Struts2-Hello-World-Annotation-Example.zip]

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

Struts 2のアノテーションはStruts 2 conventionプラグインでサポートされているので、 ”

Scanning Methodology

“と ”

Naming Converter

“メカニズムの魔法を理解する必要があります。

1.スキャン方法

多くのStruts 2の記事や書籍では、Struts 2に注釈付きクラスをどこでスキャンするかを指示するために、フィルタの「

init-param

」や「

struts.convention.action.packages

」を設定できると述べています。例えば、

<filter>
  <filter-name>struts2</filter-name>
  <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
  <init-param>
    <param-name>actionPackages</param-name>
    <param-value>com.mkyong.common</param-value>
  </init-param>
</filter>

私のテスト(Struts2バージョン2.1.6と2.1.8)では、 ”

param-value

“や ”

struts.convention.action.packages

“に何を置いても、これは当てはまりません。それを無視し、

struts、struts2、actionまたはactions

という名前の指定されたフォルダをスキャンします。

スキャンの仕組み

  1. パッケージングされた名前の注釈付きクラスをスキャンする



struts、struts2、アクションまたはアクション

“。

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


    • com.opensymphony.xwork2.Action

      インタフェースを実装しました。


    • com.opensymphony.xwork2.ActionSupport

      クラスを拡張します。

    • ファイル名はAction(例:UserAction、LoginAction)で終わります。

2.ネーミングコンバータ

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

次に例を示します。

LoginAction.java

  1. まず、ファイル名の最後にある “Action”という単語を削除します.

プレゼント。

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

したがって、終了を取り除いて最初の文字の大文字と小文字を変換した後、

LoginAction.action



login.action

に変わります。

Struts 2のコンベンションプラグインの “スキャン方法論”と “ネーミングコンバータ”機能は、実際にStruts 2プロジェクトが命名規則に正しく従っている場合にのみ、多くの利便性と利点をもたらします。さもなければそれは完全な災害になるでしょう。

Struts 2注釈の例

変換プロセスを開始するときです。

最終プロジェクトの構成


Struts2 hello world注釈、title = "Struts2-hello-world-annotation-folder-structure"

1. pom.xmlを更新する

Struts 2アノテーション機能を使用するには、

struts2-convention-plugin.jar

をダウンロードする必要があります。 +

pom.xml

...

<依存関係>
          <groupId> org.apache.struts </groupId>
      <artifactId> struts2-core </artifactId>
      <version> 2.1.8 </version>
    </dependency>
    
    <依存関係>
          <groupId> org.apache.struts </groupId>
      <artifactId> struts2-convention-plugin </artifactId>
      <version> 2.1.8 </version>
    </dependency>
...

2. LoginAction

  • LoginAction

    extends

    ActionSupport

    を作成して何もしないでください。

    ActionSupport

    のデフォルトでは、@Resultと一致し、 ”

    pages/login.jsp ** “にリダイレクトする “success”文字列が返されます。

  • 注釈バージョン**

package com.mkyong.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と同等**

<package name="user" namespace="/User" extends="struts-default">
    <action name="Login">
        <result>pages/login.jsp</result>
    </action>
</package>

3. WelcomeUserAction

execute()メソッドをオーバーライドし、@Actionと@Resultアノテーションを指定しました。

  • 注釈バージョン**

package com.mkyong.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と同等**

<package name="user" namespace="/User" extends="struts-default">
   <action name="Welcome" class="com.mkyong.user.action.WelcomeUserAction">
    <result name="SUCCESS">pages/welcome__user.jsp</result>
   </action>
</package>

Struts 2の注釈


@ Action



@ Result



@ Namespace

は自明ですが、XML同等のものと常に比較できます。

@ ResultPath ** には説明が必要な場合があります。このリンクを参照してください://struts2/struts-2-resultpath-annotation-example/[@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

フィルタを通常通り宣言してください。

<!DOCTYPE web-app PUBLIC
 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app__2__3.dtd" >

<web-app>
  <display-name>Struts 2 Web Application</display-name>

  <filter>
    <filter-name>struts2</filter-name>
    <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
  </filter>

  <filter-mapping>
    <filter-name>struts2</filter-name>
    <url-pattern>/** </url-pattern>
  </filter-mapping>

</web-app>

7.それを実行する


Struts 2注釈ログイン画面、title = "Struts2-hello-world-annotation-1"


Struts 2アノテーションの開始画面、title = "Struts 2-hello-world-annotation-2"

リファレンス

コンベンションプラグインのドキュメント]。リンク://struts2/struts-2-hello-world-example/[Strust 2 Hello World(XML

バージョン)]