単純なプログラムを書換えよう(WebWork2編)−準備

WebWork2とは

WebWork2はウェブアプリケーションフレームワークである.この分野ではStrutsが定番といえるので,「Strutsみたいなことができる」と考えれば分かりやすいだろうか.詳細は参考文献参考サイトを参照のこと.ぶっちゃけると,参考文献であげたWEB+DB PRESSで初めてWebWork2のことを知ったので,あんまり詳しいことはわからない.なお,前提とするバージョンは2.0である.

必要なソフトウェア

TomcatとJDKはインストールしよう.これらがないと話が進まない.インストール方法は省略する.今回使った環境は以下の通りである.

  • Windows XP Professional Service Pack1
  • Apache Tomcat 4.1.27/5.0.18
  • JDK 1.4.1_02

ダウンロード

Java.Netからzipファイルをダウンロードするかcvs経由でソースファイルをダウンロードできる.

ソースファイルをダウンロードした場合は,Building WebWork2の内容に従ってコンパイルする.ダウンロードしたディレクトリが${HOME}/source/webworkである場合は

$ cd ${HOME}/source/webwork
$ ant clean jar
        

となる.${HOME}/source/webwork/buildの下にwebwork-2.0.jarができる.ソースファイルをコンパイルして作ったwebwork-2.0.jarとダウンロードしたzipファイルの中にあるwebwork-2.0.jarのサイズが違っている.どちらでも問題なく動くので,とりあえず気にしない.

インストール

Tomcatの適当なディレクトリにjarファイルをコピーすることでWebWork2は使用可能となる.インストールから後述するweb.xmlの作成までは,WebWork2 QuickStart Guideが参考になる.

今回のプログラムを実行するために必要なjarファイルは以下の6個.

  • webwork-2.0.jar
  • xwork-1.0.jar
  • ognl-2.6.3-modified.jar
  • commons-logging.jar
  • oscore-2.2.1.jar
  • velocity-dep-1.3.1.jar

webwork-2.0.jar以外のjarファイルもダウンロードしたzipファイルやソースの中に入っている.zipファイルならlib/coreの中,ソースファイルなら${HOME}/source/webwork/lib/coreの中である.これら以外のjarファイルがlibディレクトリ配下にあっても問題はない.

Tomcatをインストールしたディレクトリ(以下${TOMCAT_HOME})配下にコピーする.今回は${TOMCAT_HOME}/webapps/counter/WEB-INF/lib/である.ちなみにWEB-INFより上のディレクトリ構成はTomcatの設定で変更できるが,そこまではやらない.

web.xmlの作成

TomcatからWebWork2を使えるようにweb.xmlを作成する.場所は${TOMCAT_HOME}/webapps/counter/WEB-INF/web.xmlである.web.xmlの説明はTomcatの本を参考にしたほうが早いだろう.ざっと説明するとこのような内容だ.

  1. webworkという名称が出たら,com.opensymphony.webwork.dispatcher.ServletDispatcherを実行する
  2. “.action”という文字列を含むURLにwebworkと名前をつける.上記の指定とあわせると“.action”という文字列を含むURLに対してcom.opensymphony.webwork.dispatcher.ServletDispatcherを実行する
  3. WebWork2のカスタムタグライブラリをwebworkという名前で使用
<?xml version="1.0" encoding="ISO-8859-1"?>
<!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>WebWork Sample</display-name>

  <servlet>
    <servlet-name>webwork</servlet-name>
    <servlet-class>com.opensymphony.webwork.dispatcher.ServletDispatcher</servlet-class>
  </servlet>

  <servlet-mapping>
    <servlet-name>webwork</servlet-name>
    <url-pattern>*.action</url-pattern>
  </servlet-mapping>

  <taglib>
    <taglib-uri>webwork</taglib-uri>
    <taglib-location>/WEB-INF/lib/webwork-2.0.jar</taglib-location>
  </taglib>
</web-app>
    

xwork.xmlの作成

WebWork2では画面の遷移等をxwork.xmlに記述する.記述方法は個々のプログラムの中で説明する.WebWork2なのにファイル名がxwork.xmlとなっている理由は,WebWork2の下にXWorkというフレームワークがあるためである.詳細は参考文献参考サイトをあたった方がきっと確実だ.

ディレクトリ構成

このような構成になる.

${TOMCAT_HOME}/webapps/counter/WEB-INF/classes
                                      /lib/commons-logging.jar
                                          /ognl-2.6.3-modified.jar
                                          /oscore-2.2.1.jar
                                          /velocity-dep-1.3.1.jar
                                          /webwork-2.0.jar
                                          /xwork-1.0.jar
                                      /web.xml
        

参考文献

WEB+DB PRESS Vol.16 p.32「WebWrok入門」
WebWork2のことを知るきっかけ
WEB+DB PRESS Vol.18 p.159 「WebWork2によるカンタンWebシステム構築」
さらに詳しい説明

参考サイト

OpenSymphony
WebWorkの開発元.英語
OpenSymphony Wiki
OpenSymphonyの提供するコンポーネントに関するWiki.英語
WebWork Users
日本語で読めるWebWorkの情報源.サンプルもあり助かった.
はてなダイアリー−アガテナ−
WebWorkの最新情報など