「Struts2 単純なアプリケーションの作成 Hello World」の版間の差分
1行目: | 1行目: | ||
− | ==Struts2 単純なアプリケーションの作成 Hello World== | + | ==[[Struts2 単純なアプリケーションの作成 Hello World]]== |
[[Struts2]] | [[XWork2]] | | [[Struts2]] | [[XWork2]] | | ||
− | {{include_html import_keyword_html, "!struts2"}} | + | {{include_html [[import_keyword_html]], "!struts2"}} |
http://struts.apache.org/2.x/docs/hello-world.html | http://struts.apache.org/2.x/docs/hello-world.html | ||
− | + | HTMLをフレームワークから送信したとき、入力は他のサーバーページに送信されるのではなく、あなたが提供したJavaクラスに送られます。これらのクラスはActionと呼ばれます。Actionの実行後、Resultが、レスポンスに書き出すリソースを選び出します。リソースは、通常はサーバーページですが、PDFファイルや、[[Excel]]、Javaアプレットのウィンドウを選択することもできます。 | |
単純なウェルカムメッセージを表示する"Hello World"を作成するならば、空の[http://struts.apache.org/2.x/docs/ready-set-go.html "tutorial"Webアプリケーション]を"Hello World"として作成し、以下の作業を行います。 | 単純なウェルカムメッセージを表示する"Hello World"を作成するならば、空の[http://struts.apache.org/2.x/docs/ready-set-go.html "tutorial"Webアプリケーション]を"Hello World"として作成し、以下の作業を行います。 | ||
39行目: | 39行目: | ||
public class HelloWorld extends ActionSupport { | public class HelloWorld extends ActionSupport { | ||
− | public static final String MESSAGE = "Struts is up and running ..."; | + | public static final String MESSAGE = "[[Struts]] is up and running ..."; |
public String execute() throws Exception { | public String execute() throws Exception { | ||
63行目: | 63行目: | ||
'''struts.xml''' | '''struts.xml''' | ||
<!DOCTYPE struts PUBLIC | <!DOCTYPE struts PUBLIC | ||
− | "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" | + | "-//Apache Software Foundation//DTD [[Struts]] Configuration 2.0//EN" |
"http://struts.apache.org/dtds/struts-2.0.dtd"> | "http://struts.apache.org/dtds/struts-2.0.dtd"> | ||
<struts> | <struts> | ||
74行目: | 74行目: | ||
</struts> | </struts> | ||
− | 実行してみましょう。アプリケーションをデプロイし、http://localhost:8080/tutorial/HelloWorld.action を開いて何が起こるか確かめてください。ページタイトルが、"Hello World!"となり、メッセージ "Struts is up and runnnig!"となることを確認できるでしょう。 | + | 実行してみましょう。アプリケーションをデプロイし、http://localhost:8080/tutorial/HelloWorld.action を開いて何が起こるか確かめてください。ページタイトルが、"Hello World!"となり、メッセージ "[[Struts]] is up and runnnig!"となることを確認できるでしょう。 |
====どのようにコードが動くのか==== | ====どのようにコードが動くのか==== | ||
− | ブラウザはウェブサーバに | + | ブラウザはウェブサーバに U[[R]]L http://localhost:8080/tutorial/HelloWorld.action. リクエストを送信します。 |
#コンテナは、ウェブサーバからHelloWorld.actionへのリクエストを受け取ります。web.xml から読込まれた設定に従い、コンテナは*.actionを含む全てのリクエストは、org.apache.struts2.dispatcher.FilterDispatcherにルーティングすることを知ります。FilterDispatcherは、フレームワークのエントリポイントです。 | #コンテナは、ウェブサーバからHelloWorld.actionへのリクエストを受け取ります。web.xml から読込まれた設定に従い、コンテナは*.actionを含む全てのリクエストは、org.apache.struts2.dispatcher.FilterDispatcherにルーティングすることを知ります。FilterDispatcherは、フレームワークのエントリポイントです。 | ||
84行目: | 84行目: | ||
#execute()メソッドはメッセージをセットし、SUCCESSを返します。フレームワークは、アクションマッピングをチェックし、SUCCESSが返されたときどのページをロードするのか理解します。フレームワークは、コンテナに、リクエストのレスポンスとして、HelloWorkd.jspを返すように伝えます。 | #execute()メソッドはメッセージをセットし、SUCCESSを返します。フレームワークは、アクションマッピングをチェックし、SUCCESSが返されたときどのページをロードするのか理解します。フレームワークは、コンテナに、リクエストのレスポンスとして、HelloWorkd.jspを返すように伝えます。 | ||
#HelloWorld.jspが、ページとして処理されると、<s:property value="message" />タグは、HelloWorld アクションの getMessage ゲッターを呼び出し、メッセージの値をレスポンスにマージします。 | #HelloWorld.jspが、ページとして処理されると、<s:property value="message" />タグは、HelloWorld アクションの getMessage ゲッターを呼び出し、メッセージの値をレスポンスにマージします。 | ||
− | # | + | #純粋な[[HTML]]レスポンスがブラウザに返されます。 |
− | + | [http://struts.apache.org/2.x/docs/big-picture.html 詳細な情報] | |
====Actionのテスト==== | ====Actionのテスト==== | ||
116行目: | 116行目: | ||
====覚えておくこと==== | ====覚えておくこと==== | ||
− | + | フレームワークは[[HTML]]フォームや他のリクエスト処理に、Actionクラスを使用する。アクションクラスは SUCCESS、ERROR、INPUT等、struts.xml から読込まれるマッピングされた結果名を返し、結果名は多くの場合上記例のように他ページや、他のアクションや、他のリソース(画像、PDF)を選択する。 | |
− | + | サーバーページが描画されるとき、多くの場合、アクションから提供された動的データも取り込まれる。動的データの表示を簡単にするために、フレームワークは、[[HTML]]のように利用できるタグのセットを提供する。 | |
− | {{include_html import_keyword_html, "!javascript"}} | + | {{include_html [[import_keyword_html]], "!javascript"}} |
2020年2月16日 (日) 04:32時点における最新版
目次
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アプリケーションを"Hello World"として作成し、以下の作業を行います。
- メッセージを表示するサーバーページを作成
- メッセージを生成するActionクラスを作成
- アクションとページをマッピングする
これらの作成されたコンポーネント、ワークフローを良く知られた3つの関係、 View、Model、Controllerに分割します。関係を分割することにより、 アプリケーションが複雑になった場合でも、管理が容易になります。
コード
最初に、メッセージを表示するサーバーページ HelloWorld.jsp が必要です。
HelloWorld.jsp
<%@ taglib prefix="s" uri="/struts-tags" %> <html> <head> <title>Hello World!</title> </head> <body> <h2><s:property value="message" /></h2> </body> </html>
次に、メッセージを生成する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
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <package name="tutorial" extends="struts-default"> <action name="HelloWorld" class="tutorial.HelloWorld"> <result>/HelloWorld.jsp</result> </action> <!-- Add your actions here --> </package> </struts>
実行してみましょう。アプリケーションをデプロイし、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が、ページとして処理されると、<s:property value="message" />タグは、HelloWorld アクションの getMessage ゲッターを呼び出し、メッセージの値をレスポンスにマージします。
- 純粋な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"}}
© 2006 矢木浩人