Struts 2 Hello Worldアノテーションの例
このチュートリアルでは、以前のリンク://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
という名前の指定されたフォルダをスキャンします。
スキャンの仕組み
-
パッケージングされた名前の注釈付きクラスをスキャンする
”
struts、struts2、アクションまたはアクション
“。
-
次に、次のいずれかの条件に一致するファイルをスキャンします.
-
com.opensymphony.xwork2.Action
インタフェースを実装しました。 -
com.opensymphony.xwork2.ActionSupport
クラスを拡張します。 -
ファイル名はAction(例:UserAction、LoginAction)で終わります。
-
Struts 2 conventionプラグインのドキュメント
を参照してください。
2.ネーミングコンバータ
Struts 2 conventionプラグインは、注釈付きアクションファイル名をすべて指定された形式に変換します。
次に例を示します。
LoginAction.java
-
まず、ファイル名の最後にある “Action”という単語を削除します.
プレゼント。
-
次に、ファイル名の最初の文字を小文字に変換します.
したがって、終了を取り除いて最初の文字の大文字と小文字を変換した後、
LoginAction.action
は
login.action
に変わります。
Struts 2のコンベンションプラグインの “スキャン方法論”と “ネーミングコンバータ”機能は、実際にStruts 2プロジェクトが命名規則に正しく従っている場合にのみ、多くの利便性と利点をもたらします。さもなければそれは完全な災害になるでしょう。
Struts 2注釈の例
変換プロセスを開始するときです。
最終プロジェクトの構成
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.それを実行する
-
LoginAction.action
が
login.action ** に変更されました。上記の「名前付けコンバータ」を参照してください。 +
http://localhost:8080/Struts2Example/User/login.action
リファレンス
コンベンションプラグインのドキュメント]。リンク://struts2/struts-2-hello-world-example/[Strust 2 Hello World(XML
バージョン)]