| ページ一覧 | ブログ | twitter |  書式 | 書式(表) |

MyMemoWiki

「Struts2 単純なアプリケーションの作成 Hello World」の版間の差分

提供: MyMemoWiki
ナビゲーションに移動 検索に移動
 
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アプレットのウィンドウを選択することもできます。
+
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!"となることを確認できるでしょう。
  
 
====どのようにコードが動くのか====
 
====どのようにコードが動くのか====
  
ブラウザはウェブサーバに URL http://localhost:8080/tutorial/HelloWorld.action. リクエストを送信します。
+
ブラウザはウェブサーバに 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レスポンスがブラウザに返されます。
+
#純粋な[[HTML]]レスポンスがブラウザに返されます。
  
[[http://struts.apache.org/2.x/docs/big-picture.html 詳細な情報]] |
+
[http://struts.apache.org/2.x/docs/big-picture.html 詳細な情報]
  
 
====Actionのテスト====
 
====Actionのテスト====
116行目: 116行目:
 
====覚えておくこと====
 
====覚えておくこと====
  
フレームワークはHTMLフォームや他のリクエスト処理に、Actionクラスを使用する。アクションクラスは SUCCESS、ERROR、INPUT等、struts.xml から読込まれるマッピングされた結果名を返し、結果名は多くの場合上記例のように他ページや、他のアクションや、他のリソース(画像、PDF)を選択する。
+
フレームワークは[[HTML]]フォームや他のリクエスト処理に、Actionクラスを使用する。アクションクラスは SUCCESS、ERROR、INPUT等、struts.xml から読込まれるマッピングされた結果名を返し、結果名は多くの場合上記例のように他ページや、他のアクションや、他のリソース(画像、PDF)を選択する。
  
サーバーページが描画されるとき、多くの場合、アクションから提供された動的データも取り込まれる。動的データの表示を簡単にするために、フレームワークは、HTMLのように利用できるタグのセットを提供する。
+
サーバーページが描画されるとき、多くの場合、アクションから提供された動的データも取り込まれる。動的データの表示を簡単にするために、フレームワークは、[[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"として作成し、以下の作業を行います。

  1. メッセージを表示するサーバーページを作成
  2. メッセージを生成するActionクラスを作成
  3. アクションとページをマッピングする
これらの作成されたコンポーネント、ワークフローを良く知られた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. リクエストを送信します。

  1. コンテナは、ウェブサーバからHelloWorld.actionへのリクエストを受け取ります。web.xml から読込まれた設定に従い、コンテナは*.actionを含む全てのリクエストは、org.apache.struts2.dispatcher.FilterDispatcherにルーティングすることを知ります。FilterDispatcherは、フレームワークのエントリポイントです。
  2. フレームワークは、"HelloWorld"という名前のアクションマッピングを探し、一致するクラス"HelloWorld"を見つけます。フレームワークは、このActionをインスタンス化し、execute()メソッドを呼び出します。
  3. execute()メソッドはメッセージをセットし、SUCCESSを返します。フレームワークは、アクションマッピングをチェックし、SUCCESSが返されたときどのページをロードするのか理解します。フレームワークは、コンテナに、リクエストのレスポンスとして、HelloWorkd.jspを返すように伝えます。
  4. HelloWorld.jspが、ページとして処理されると、<s:property value="message" />タグは、HelloWorld アクションの getMessage ゲッターを呼び出し、メッセージの値をレスポンスにマージします。
  5. 純粋な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"}}