DWRいいよ、DWR
Javaで書いているWebアプリケーションで、JavaScriptで非同期通信を行う必要があったので、以前から気になっていたDWRを使ってみました。
DWR(Direct Web Remoting)はAjaxを扱うことに特化したJavaのフレームワークです。
Ajaxを使うときに、クライアント側(ブラウザ側)の通信部分はJQueryやprototype.jsなどを使えば比較的簡単に行えるのですが、サーバ側でデータをJSONやXMLで表示する部分などは手間がかかります。
以前、PHPでAjaxを使う処理を書いたのですが、JSON形式にするのは結構面倒くさかったです。JSONなのでJavaScript側で読み込んでからは簡単に使えましたが、XMLだとDOMで処理をしなければなりません。
DWRを使えばJavaのオブジェクトをそのままJavaScriptで使える形に変換してくれるので、このような煩わしい作業から開放されます。
JavaScript側でもJavaのオブジェクトを扱うような感じで受け取ったデータを扱えます。
また、非同期通信やHTML要素から値を取得するライブラリもついています。
使ってみた感じ、使い方に迷うことも特にありませんでした。
Javaを使ったWebアプリケーションを書いていて、Ajaxを使う必要があるならDWRを使うと効率がアップすることは間違いありませんので、ぜひ導入を考えてもらいたいです。
導入は、「DWRはAjaxアプリを作りたいJava開発者にお勧め (1/4):MyEclipseでAjax+Javaをやさしく開発(2) - @IT」が参考になりました。
使ってみて気になった点など
- POJOでAjaxのサーバ側の処理が書けるのはすばらしい。
- クラスをJavaScript側に渡すときは、
で渡すクラスをマッピングしておく - dwr.xmlにJavaScriptとJavaのクラスのマッピングを記述するが、パッケージを指定したら自動的にマッピングできないのか?(といってもdwr.xmlを各作業自体はそれほど面倒ではない)
- O/Rマッピングしているクラスをマッピングすると、余計なデータをJavaScript側に渡してしまいそうなので注意がいる(パスワードなどJavaScript側で扱う必要はないデータをアクセス可能な状態にしてしまう可能性がある)
※後で追加するかも。