Javaサンプルコード辞典

DWRでリッチなWebページを作る!(1) - 初めてのDWR

DWRを利用するとJavaScriptからサーバー上で動作しているJavaのクラスをまるでブラウザで動作している関数のように、扱うことが可能です。今回から数回に渡りDWRの使用方法を詳細にレポートしていきます。

DWRとは


DWRとは「Direct Web Remoting」の略で、AjaxとJavaを利用してWebページを構築するためのオープンソースのJavaのライブラリです。DWRは開発者の「Jow Walker」のサイトGETAHEADからダウンロードすることができます。

DWRはサーバ側のオブジェクトにアクセスするためのJavaScriptを自動的に生成します。開発者はその生成されたJavaScriptを使用するための簡単なコードをページに埋めるだけで簡単にサーバオブジェクトを利用できるのです。イメージとしては、SOAPを使ってリモートプロシジャコールをするのと似ています。下の図はDWRが動作する仕組みを表しています。

DWRServletというサーブレットがブラウザのページとサーバ側のオブジェクトの間を取り持っています。Webページにサーバ側のオブジェクトとやり取りするためのJavaScriptを記述します。
(例:<script type="text/javascript" src="/ajaxweb/dwr/interface/Hello.js">)。
その指定されたJavaScriptをDWRServletが自動生成してブラウザに返します。そしてそのJavaScriptに定義されている関数をコールすることによってサーバ側のオブジェクトに接続することができます。

DWRを体験する


では、早速DWRを体験してみましょう。サーバにはTomcat、開発環境にはEclipseを使用します。DWRは2.0を使用します。(2007年11月現在の安定稼動バージョンは1.4です。)まず、EclipseのWebプロジェクトを作成し、そのWEB-INF/libの下にここからダウンロードした「dwr.jar」を置きます。次に「web.xml」に以下を追加します。
<servlet>
  <servlet-name>dwr-invoker</servlet-name>
  <servlet-class>uk.ltd.getahead.dwr.DWRServlet</servlet-class>
  <init-param>
    <param-name>debug</param-name>
    <param-value>true</param-value>
  </init-param>
</servlet>

<servlet-mapping>
  <servlet-name>dwr-invoker</servlet-name>
  <url-pattern>/dwr/*</url-pattern>
</servlet-mapping>
そして、最後にWEB-INFの下に「dwr.xml」というXMLファイルを作成し、以下を記述します。
<!DOCTYPE dwr PUBLIC
    "-http://GetAhead Limitedhttp://DTD Direct Web Remoting 2.0//EN"
    "http://www.getahead.ltd.uk/dwr/dwr20.dtd">

<dwr>
  <allow>
    <create creator="new" javascript="JDate">
      <param name="class" value="java.util.Date"/>
    </create>
  </allow>
</dwr>
これで準備完了です。ブラウザに
「http://localhost:8080/<コンテキストルート>/dwr/index.html」
と入力すると「JDate」というリンクがあるページが表示されます。それをクリックすると以下のような画面が表示されます。

この画面にはサーバー側で動作する「java.lang.Date」クラスのメソッド名とそれを実行するための「Excecute」ボタンが表示されています。試しにtoString()メソッドの横の「Excecute」ボタンをクリックすると、「Sat Nov 10 11:32:44 JST 2007」のように日時を表す文字列が表示されます。これはサーバ側で実行されたjava.lang.DateのtoString()の結果です。このページでは「DWRServlet」が出力した関数を各「Excecute」ボタンがクリックされた時に呼び出して、サーバ側のオブジェクトを利用しています。

このページは元々、サーバ側のオブジェクトをデバックするために「DWRServlet」が出力するページです。引数と戻り値に参照型に指定されているメソッドは、このページでは実行できません。これらを実行するためには、コンバーターを設定するという作業が必要です。これについては次回以降でご紹介します。また、Objectクラスのメソッドやオーバーロードされたメソッドも実行できません。

動作するブラウザ


DWRは、IE、Safari、FireFox、Operaなどほとんどのブラウザで動作することが確認されています。筆者はIEとFireFoxで確認しました。詳細はここを参照して下さい。

さて次回は実際にサーバ側のJavaのクラスとそれを呼び出すページを作ります。


(2007年11月25日)  

 ちょっと一休み. Javaキーワード並び替えゲーム

画面に表示される文字列を並び替えるとJavaに関連するキーワードになります。ヒントをたよりに並び替えを行ってエンターを押してください。 ユーザ登録をしてログインするとランキングに参加できます。
Flex Tips

DWRでリッチなWebページを作る!

Java Tips  java.io 編

Java Tips  java.lang 編

Java Tips  java.math 編

Java Tips  java.util 編

Java Tips  java.util.zip 編

Java Tips  java.text 編

Javaからデータベースを利用する