AJAXの最近のブログ記事

DWR セッション使用テスト

FrontPage - JAVAに関する備忘録 HIDEKAZU PukiWiki さんの
Ajax DWR(Direct Web Remoting) セッション のコード改(こちらでは動作できなかった為)

*赤いところが変更点と気になったところ。

使用イメージ


drw_session01.png

郵便番号のところに7つ数字入れるとその瞬間に都道府県と市区町村、テスト(セッション情報)に情報が入る。



drw_session02.png

確認ボタンを押すとアラーとが出る。



session.html
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>DWR</title>
<script type='text/javascript' src='dwr/interface/Testdwr.js'></script>
<script type='text/javascript' src='dwr/engine.js'></script>
<script type='text/javascript' src='dwr/util.js'></script>
<script type='text/javascript'>
<!--
var resData;
function searchAddress () {
var zipcode = dwr.util.getValue("zipcode");
if (zipcode.length == 7) {
Testdwr.getZipdata(zipcode, result);  //getZipdataの引数が郵便番号がはいり、コールバック関数resultが呼ばれると思うので、zipcodeとresultを逆にしました。
}
}

function result(data) {
dwr.util.setValues(data);
resData = dwr.util.toDescriptiveString(data, 2); // toDescriptiveString(data, 2)はtoStringの気の効いてるやつ?第1引数は文字列にしたいオブジェクト、第2引数は複数行可の指定?エイゴワカラン。
}

function btnKakunin() {
alert(resData);
}
// -->
</script>
</head>
<body>
住所検索<br>
郵便番号:<input type="text" id="zipcode" size="10" onkeyup="searchAddress()" maxlength="7"><br>
都道府県:<input type="text" id="pref" size="10"><br>
市区町村:<input type="text" id="city" size="10"><br>
テスト:<input type="text" id="test2" size="10"><br>
<input type="button" value="確認" onclick="btnKakunin()">
</body>
</html>

Testdwr.java
package jp.hoge;

import java.util.HashMap;
import java.util.Map;
import javax.servlet.http.HttpSession;
import org.directwebremoting.WebContextFactory;
import org.directwebremoting.WebContext;

public class Testdwr {
public Map<String,Object> getZipdata(String data) {
//DWR2.0ではuk.ltd.getahead.dwr.ExecutionContextは非推奨になってるので変更
WebContext wContext = WebContextFactory.get();
HttpSession session = wContext.getSession();


if (session.getAttribute("test2") == null) {
session.setAttribute("test2", data);
}

Map<String,Object> map = new HashMap<String,Object>();
map.put("pref","北海道");
map.put("city","札幌市");
map.put("test2",session.getAttribute("test2"));
return map;
}
}


dwr.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE dwr PUBLIC 
  "-//GetAhead Limited//DTD Direct Web Remoting 2.0//EN" 
  "http://getahead.ltd.uk/dwr/dwr20.dtd">
<dwr>
    <allow>
	<create creator="new" javascript="Testdwr" scope="session">
	        <param name="class" value="jp.hoge.Testdwr">
	        </param>
        </create>
    </allow>
</dwr>
web.xml
<servlet>
	    <servlet-name>dwr-invoker</servlet-name>
	    <servlet-class>org.directwebremoting.servlet.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>

Dojo ToolKit 1.0.2 参考

DWR 参考サイト

DWRの設定方法
DWRが実現する次世代AJAX(後編)
DWR紹介プレゼン用資料みたい・・・こちら

アーカイブ

Powered by Movable Type 4.22-ja