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という名前の指定されたフォルダーのみをスキャンします。
スキャンの仕組みは次のとおりです
-
「struts, struts2, action or actions」という名前のパッケージにある注釈付きクラスをスキャンします。
-
次に、次の条件のいずれかに一致するファイルをスキャンします。
-
com.opensymphony.xwork2.Actionインターフェースを実装しました。
-
com.opensymphony.xwork2.ActionSupportクラスを拡張します。
-
ファイル名はアクションで終わります(例: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を作成して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.actionはlogin.actionに変更されます。上記の「ネーミングコンバーター」を参照してください。
http://localhost:8080/Struts2Example/User/login.action