前回の記事
※この記事は、2回連載の後編になります。前編をお読みになっていない方は、以下のリンクから参照ください。
DWRが実現する次世代AJAX(前編)
JavaBeanクラスを定義して利用する
前回、DWRの基本的な使い方について説明をしました。DWRは、サーブレットの技術を利用したライブラリで、Jarファイルを追加するだけで利用することができます。これはdwr.xmlという設定ファイルに記述を行うことで、そのクラスをJavaScriptのオブジェクトとして利用できるようにすることができます。サーバ側にJavaを使って必要な処理を用意しておき、それをクライアントのJavaScriptから呼び出して使うという、AJAXのもっとも基本となる機能を、ほんの数行のJavaScriptを書くだけで実現できてしまいます。
ごく単純なAJAX機能は、比較的簡単に作成できることがわかったことと思います。今回は、実際にJavaBeanクラスとそのマネージャクラスを定義し、それを利用してより本格的なAJAXプログラムを作成してみましょう。
今回は、簡単な投稿システムを作成してみることにします。まず、投稿データのBeanクラスを定義し、このBeanを管理するためのマネージャクラスを作成しましょう。そして、DWRを使い、JavaScriptからマネージャクラスのメソッドを呼び出して投稿メッセージの表示や新規投稿などを行ってみることにします。
前回、Eclipse WTPの動的WebプロジェクトとしてDWRを利用したWebアプリケーションを作成しました。これをそのまま再利用して説明を行っていくことにしましょう。――まず最初に、dwr.xmlへの登録から行いましょう。今回は、Bean管理をするマネージャクラスを登録しておくことにします。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE dwr PUBLIC
"-//GetAhead Limited//DTD Direct Web Remoting 1.0//EN"
"http://www.getahead.ltd.uk/dwr/dwr10.dtd">
<dwr>
<allow>
<create creator="new" javascript="MyBeanManager"
scope="application">
<param name="class" value="jp.tuyano.MyBeanManager" />
</create>
<convert match="jp.tuyano.MyBean" converter="bean"></convert>
</allow>
</dwr>
ここでは、jp.tuyano.MyBeanManagerというクラスをMyBeanManagerオブジェクトとして登録しています。これで投稿データの管理を行わせるわけです。今回は、その他に<convert>というタグも追加されていますね。これは、Beanクラスをコンバートするためのコンバーターを用意するものです。ここでは、jp.tuyano.MyBeanというクラスのコンバーターを宣言しています。こうすることにより、このMyBeanクラスのインスタンスをJavaScriptから理解できるようになります。
また、creatorのタグ部分に、新たに「scope」という属性が追加されているのに注目してください。これは、文字通りBeanのスコープを指定するものです。今回は、Webアプリケーションが起動したらずっとBeanを保持し続けてほしいので、scope="application"としてスコープをapplicationにしています。この他、sessionにすればセッションが生きている間、保持し続けるように設定することもできます。