Spring 2 DWR 2を結合したユーザ登録の例


1.ソフトウェアバージョン
Spring-Version:2.0.7   http://www.springframework.org/
DWR-version:2.0.2  http://getahead.org/dwr
IDE:Eclipse 3.2+MyEclipse 6.0
2.新規プロジェクト:dwrsping
スプリングに対するサポートを入れて、dwrのjarカバンdwr.jarをWEB-INF\libにコピーします.
必要なjarパッケージは以下の通りです.
Spring2结合DWR2的用户注册的例子
3.web.xmlを編集してspringとdwrに対するサポートを追加します.
<!-- DWR servlet    -->
<servlet>
	<servlet-name>dwr-invoker</servlet-name>
	<servlet-class>
		org.directwebremoting.spring.DwrSpringServlet
	</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>

<!--   Spring    -->
<listener>
	<listener-class>
		org.springframework.web.context.ContextLoaderListener
	</listener-class>
</listener>
説明:
org.directwebreement.spring.DwrSpring Servletこのクラスはdwrがspringを統合するために提供するservletです.これを加入してから、dwrの配置はspringのプロファイルappication Contact.xmlに書き込むことができます.dwr.xmlは省略されました.
4.jspページindex.jspを編集する
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

<html>
  <head>    
    <title>DWR+SPRING</title>
    <script type="text/javascript" src="dwr/engine.js"></script>
  	<script type="text/javascript" src="dwr/util.js"></script>
  	<script type="text/javascript" src="dwr/interface/UserAjaxHelper.js"></script>
  	<script language="javascript">
  	function checkUser(widget){
		var username = widget.value;
		// username   checkUsername  ,     showUsermsg js  
		UserAjaxHelper.checkUsername(username,showUsermsg);
	}

	//showUsermsg     ,data checkUsername    
	var showUsermsg = function(data){
		if(data){
				DWRUtil.setValue("usermsg","<font color='red'>        </font>", { escapeHtml:false });
	 		}
	 		else{
				DWRUtil.setValue("usermsg","<font color='green'>        </font>", { escapeHtml:false });
	 		}
	}
  	</script>
  </head>
  
  <body onload='dwr.util.useLoadingMessage()'>
    <form action="#">
	    <table border="0">
	    	<tr><td>   :</td><td><input type="text" name="username" id="username" value="" onkeyup="checkUser(this);"/><span id="usermsg"></span></td></tr>
	    	<tr><td>  :</td><td><input type="password" name="userpwd" id="userpwd" value=""></td></tr>
	    	<tr><td><input type="submit" value="  "/></td><td><input type="reset" value="  "/></td></tr>
	    </table>
    </form>
  </body>
</html>
説明:
<script type="text/javascript" src="dwr/engine.js"></script>
<script type="text/javascript" src="dwr/util.js"></script>
この二つはdwrがデフォルトで呼び出したいjsファイルです.必ずファイルに記入してください.
UserAjaxHelper.jsとは、aplication Contactext.xmlファイルで構成されるAJAXの操作の種類です.
呼び出しの書き方は:
UserAjaxHelper.checkUsername(username,showUsermsg);
var showUsermsg = function(data){......}
時々書きます
UserAjaxHelper.checkUsername(username,showUsermsg());
function showUsermsg (data){......}
これで問題が発生します.showUsermsgは戻り値dataが得られなくなります.なぜですか?
5.springのプロファイルを編集し、dwrの構成を追加します.

<?xml version="1.0" encoding="UTF-8"?>
<beans
	xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:dwr="http://www.directwebremoting.org/schema/spring-dwr"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
	 http://www.directwebremoting.org/schema/spring-dwr http://www.directwebremoting.org/schema/spring-dwr-2.0.xsd">
	 
	<!-- DWR      -->
	<dwr:configuration></dwr:configuration><!--    configuration -->
	<dwr:controller id="dwrController" debug="true" />
	<!-- DWR      -->
	  
	 <!-- spring bean   -->
	 <bean id="userService" class="test.bcndyl.service.impl.UserServiceImpl">
	 </bean>
	 
	 <bean id="userAjaxHelper" class="test.bcndyl.dwr.UserAjaxHelper">
		<property name="userService" ref="userService" />
		<!--      js   -->
		<dwr:remote javascript="UserAjaxHelper"></dwr:remote>
	</bean>
	<!-- end spring bean   -->
</beans>
説明:
dwrの定義を追加するには
xmlns:dwr=http://www.directwebremoting.org/schema/spring-dwr
まだありますhttp://www.directwebremoting.org/schema/spring-dwr http://www.directwebremoting.org/schema/spring-dwr-2.0.xsd
すべてのdwrの定義はdwrのプレフィックスを追加します.stringタイプのusernameに入るだけですので、convertは設定されていません.
6.dwr呼び出しの操作類UserAjaxHelper
package test.bcndyl.dwr;

import test.bcndyl.service.IUserService;

public class UserAjaxHelper {
	
	private IUserService userService;

	public IUserService getUserService() {
		return userService;
	}

	public void setUserService(IUserService userService) {
		this.userService = userService;
	}
	
	public boolean checkUsername(String username){
		boolean returnVal = this.getUserService().isUserExist(username);
		return returnVal;
	}

}
ユーザー操作のserviceインターフェースIUserService
package test.bcndyl.service;

public interface IUserService {
	
	//      
	public boolean isUserExist(String username);

}
ユーザー操作のserviceインターフェースIUserServiceの実現タイプUserServiceImpl
package test.bcndyl.service.impl;

import test.bcndyl.service.IUserService;

public class UserServiceImpl implements IUserService {

	@Override
	public boolean isUserExist(String username) {
		/*
		 *            
		 *      Hibernate  
		 *          
		 *  true--    ,false-     
		 */
		
		//    ,        hello, hello  true,  hello  false
		if("hello".equals(username))
			return true;
		return false;
	}

}
7.dwrが正しく動作しているかを検出する方法は、ブラウザのアドレスバーに入力できます.http://localhost:8080/appName/dwr
dwrで呼び出す方法が見られます.

8.この例のプログラム運転結果
Spring2结合DWR2的用户注册的例子