DWRを使ったJava+Ajax通信


バイトでStruts+DWRを使い始めたけどいまいち理解してないので個人的にインストールして使ってみることにした。
DWRはがっつりjavascriptを書かなくてもjavaAjax通信を提供してくれるライブラリです。(new XMLHttpRequese()なんちゃらを書かなくていいてこと)
まずDWRのインストールで気をつけるのはすでにインストール済みのTomcatのバージョンです。
  DWR:1.1.4 ― Tomcat:5.0.x
  DWR:2.0.5 ― Tomcat:5.5.x
これじゃないとDWRは動きません。JDKは最新のものでも動くみたい。
(開発環境)
JDK:1.6.0
Tomcat:5.5.2
DWR:2.0.5


DWRのダウンロード/インストール
以下のサイトからdwr.jarファイルをダウンロードしてくる。
http://directwebremoting.org/
ダウンロードしたdwr.jarを%Tomcatプロジェクト%/WEB-INF/libに設置してビルドパスに追加する。これでインストールは完了したことになる。

DWRHello World!!
DWRを使ってHello Worldをしてみる。
Tomcatプロジェクトのweb.xmlに以下を追加する。



dwr-invoker

org.directwebremoting.servlet.DwrServlet

1


dwr-invoker
/dwr/*

(サーバ側)
executeメソッドはメッセージを作成してそれをHelloBeanに格納します↓
HelloService.java

package jp.co.ajax;
import co.jp.bean.HelloBean;

public class HelloService {
public HelloBean execute(String name){
HelloBean message= new HelloBean();
message.setMessage(name+ " Hello World!!");
return message;
}
}

表示するメッセージを格納するbean↓
HelloBean.java

package jp.co.bean;
public class HelloBean {
private String messgae;

public String getMessage() {
return message;
}
public void setMessage(String messgae) {
this.message = message;
}
}

(クライアント)
input textに名前して入力て表示ボタンで押せばメッセージが表示せれます↓
scriptでHelloServiceのexcuteメソッドを使って入力された名前を格納します。
ここでexcuteの第二引数にコールバック関数(ここでいうloadMessage())を指定することでajax通信で受け取った変数の処理を指定できます。


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">










<body>
<h2>Hello World </h2>
<p>名前を入れてください: <input type="text" id="message" />
<input type="button" value="表示" onclick="show()" />|
<br/>
メッセージ:<span id="result" style="background:#CCFF99; padding:4px;"></span>
</html>
</body>
</html>


は決まり文句。
はder.xmlに基づいて自動生成されるjavascript


%Tomcatプロジェクト%/WEB-INFにdwr.xmlを作成して以下を入力する。
javascript="Hello"がajax通信のときに自動生成されるjavascript名になる。
dwr.xml

<!DOCTYPE dwr PUBLIC
"-//GetAhead Limited//DTD Direct Web Remoting 2.0//EN"
"http://getahead.ltd.uk/dwr/dwr20.dtd">








以上で完了です。
tomcatを起動してhttp://localhost:88080/%Tomcatプロジェクト名%/にアクセスして動かしてみる。