!!!Struts2 単純なアプリケーションの作成 Hello World [Struts2][XWork2] {{include_html import_keyword_html, "!struts2"}} http://struts.apache.org/2.x/docs/hello-world.html HTMLをフレームワークから送信したとき、入力は他のサーバーページに送信されるのではなく、あなたが提供したJavaクラスに送られます。これらのクラスはActionと呼ばれます。Actionの実行後、Resultが、レスポンスに書き出すリソースを選び出します。リソースは、通常はサーバーページですが、PDFファイルや、Excel、Javaアプレットのウィンドウを選択することもできます。 単純なウェルカムメッセージを表示する"Hello World"を作成するならば、空の["tutorial"Webアプリケーション|http://struts.apache.org/2.x/docs/ready-set-go.html]を"Hello World"として作成し、以下の作業を行います。 +メッセージを表示するサーバーページを作成 +メッセージを生成するActionクラスを作成 +アクションとページをマッピングする これらの作成されたコンポーネント、ワークフローを良く知られた3つの関係、 View、Model、Controllerに分割します。関係を分割することにより、 アプリケーションが複雑になった場合でも、管理が容易になります。 !コード ::最初に、メッセージを表示するサーバーページ HelloWorld.jsp が必要です。 '''HelloWorld.jsp''' <%@ taglib prefix="s" uri="/struts-tags" %> Hello World!

::次に、メッセージを生成するActionクラスが必要です。 '''HelloWorld.java''' package tutorial; import com.opensymphony.xwork2.ActionSupport; public class HelloWorld extends ActionSupport { public static final String MESSAGE = "Struts is up and running ..."; public String execute() throws Exception { setMessage(MESSAGE); return SUCCESS; } private String message; public void setMessage(String message){ this.message = message; } public String getMessage() { return message; } } ::3番目に、それぞれを結びつけるマッピングを行います。 struts.xmlを編集し、HelloWorldマッピングを追加します。 '''struts.xml''' /HelloWorld.jsp 実行してみましょう。アプリケーションをデプロイし、http://localhost:8080/tutorial/HelloWorld.action を開いて何が起こるか確かめてください。ページタイトルが、"Hello World!"となり、メッセージ "Struts is up and runnnig!"となることを確認できるでしょう。 !どのようにコードが動くのか ブラウザはウェブサーバに URL http://localhost:8080/tutorial/HelloWorld.action. リクエストを送信します。 +コンテナは、ウェブサーバからHelloWorld.actionへのリクエストを受け取ります。web.xml から読込まれた設定に従い、コンテナは*.actionを含む全てのリクエストは、org.apache.struts2.dispatcher.FilterDispatcherにルーティングすることを知ります。FilterDispatcherは、フレームワークのエントリポイントです。 +フレームワークは、"HelloWorld"という名前のアクションマッピングを探し、一致するクラス"HelloWorld"を見つけます。フレームワークは、このActionをインスタンス化し、execute()メソッドを呼び出します。 +execute()メソッドはメッセージをセットし、SUCCESSを返します。フレームワークは、アクションマッピングをチェックし、SUCCESSが返されたときどのページをロードするのか理解します。フレームワークは、コンテナに、リクエストのレスポンスとして、HelloWorkd.jspを返すように伝えます。 +HelloWorld.jspが、ページとして処理されると、タグは、HelloWorld アクションの getMessage ゲッターを呼び出し、メッセージの値をレスポンスにマージします。 +純粋なHTMLレスポンスがブラウザに返されます。 [詳細な情報|http://struts.apache.org/2.x/docs/big-picture.html] !Actionのテスト アクションをテストするのは簡単です。 '''HelloWorldTest.java''' package tutorial; import junit.framework.TestCase; import com.opensymphony.xwork2.Action; import com.opensymphony.xwork2.ActionSupport; public class HelloWorldTest extends TestCase { public void testHelloWorld() throws Exception { HelloWorld hello_world = new HelloWorld(); String result = hello_world.execute(); assertTrue("Expected a success result!", ActionSupport.SUCCESS.equals(result)); assertTrue("Expected the default message!", HelloWorld.MESSAGE.equals(hello_world.getMessage())); } } !覚えておくこと フレームワークはHTMLフォームや他のリクエスト処理に、Actionクラスを使用する。アクションクラスは SUCCESS、ERROR、INPUT等、struts.xml から読込まれるマッピングされた結果名を返し、結果名は多くの場合上記例のように他ページや、他のアクションや、他のリソース(画像、PDF)を選択する。 サーバーページが描画されるとき、多くの場合、アクションから提供された動的データも取り込まれる。動的データの表示を簡単にするために、フレームワークは、HTMLのように利用できるタグのセットを提供する。 {{include_html import_keyword_html, "!javascript"}}