さて、理屈はこれくらいでおいといて今日は実際にWebWorkを使って以下のような非常に簡単なWebアプリを作ってみます。
・リクエストパラメータ"name"から値をとってきて「こんにちは! xxさん」という挨拶を表示する
以下の手順で作業をすすめることにします。
1. Actionの作成
2. Velocityテンプレートの作成
3. web.xmlの作成
4. xwork.xmlの作成
Actionの作成
以下の通りActionインターフェースを実装したクラスを作成します。
リクエストパラメータ"name"を受け取るためにプロパティnameが定義されています。executeメソッドの戻り値は処理結果を表す任意の文字列で、XWorkはこの値と設定ファイル(xwork.xml)をもとにビューを選択します。StrutsのActionForwardと同等のものですね。SUCCESSというのはActionインターフェースで定義されている定数で、処理結果としてありがちなものとしてほかにERROR, INPUT, LOGIN, NONEが定義されています。
Velocityテンプレートの作成
今回は私の好みでビューにはVelocityを使いますが、もちろんJSPを使うこともできます。Velocityテンプレートは以下のようになります。
$nameでActionのNameプロパティが参照できます。Velocityについてはこちらを参照願います。 JSPのかわりに使えるとても使いやすいテンプレートエンジンです。個人的にかなり好きです。
web.xmlの作成
web.xmlに以下の通りWebWork固有の記述を追加します。
・リクエストパラメータ"name"から値をとってきて「こんにちは! xxさん」という挨拶を表示する
以下の手順で作業をすすめることにします。
1. Actionの作成
2. Velocityテンプレートの作成
3. web.xmlの作成
4. xwork.xmlの作成
Actionの作成
以下の通りActionインターフェースを実装したクラスを作成します。
package wwstudy; import com.opensymphony.xwork.Action; /** * Hello, World */ public class HelloAction implements Action { /** * Name */ private String name; /** * Performs the simple action */ public String execute() { return SUCCESS; } public void setName(String s) { name = s; } public String getName() { return name; } }
リクエストパラメータ"name"を受け取るためにプロパティnameが定義されています。executeメソッドの戻り値は処理結果を表す任意の文字列で、XWorkはこの値と設定ファイル(xwork.xml)をもとにビューを選択します。StrutsのActionForwardと同等のものですね。SUCCESSというのはActionインターフェースで定義されている定数で、処理結果としてありがちなものとしてほかにERROR, INPUT, LOGIN, NONEが定義されています。
Velocityテンプレートの作成
今回は私の好みでビューにはVelocityを使いますが、もちろんJSPを使うこともできます。Velocityテンプレートは以下のようになります。
こんにちは! $name さん.
$nameでActionのNameプロパティが参照できます。Velocityについてはこちらを参照願います。 JSPのかわりに使えるとても使いやすいテンプレートエンジンです。個人的にかなり好きです。
web.xmlの作成
web.xmlに以下の通りWebWork固有の記述を追加します。
<servlet> <servlet-name>webwork</servlet-name> <servlet-class>com.opensymphony.webwork.dispatcher.ServletDispatcher</servlet-class> </servlet> <servlet> <servlet-name>velocity</servlet-name> <servlet-class>com.opensymphony.webwork.views.velocity.WebWorkVelocityServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>webwork</servlet-name> <url-pattern>*.action</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>velocity</servlet-name> <url-pattern>*.vm</url-pattern> </servlet-mapping>