`
lveyo
  • 浏览: 915382 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Spring2结合DWR2的用户注册的例子

    博客分类:
  • AJAX
阅读更多
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

加入对spring的支持,并把dwr的jar包dwr.jar复制到WEB-INF\lib下
需要的jar包为:



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.directwebremoting.spring.DwrSpringServlet这个类是dwr专门为整合spring提供的一个servlet,加入这个之后,dwr的配置就可以写入到spring的配置文件applicationContext.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就是通过applicationContext.xml文件配置的AJAX操作类
调用的写法为:
UserAjaxHelper.checkUsername(username,showUsermsg);
var showUsermsg = function(data){......}


有时写成:
UserAjaxHelper.checkUsername(username,showUsermsg());
function showUsermsg (data){......}

这样就会出问题,showUsermsg就会得不到返回值data,不知道为什么


5. 编辑spring的配置文件applicationContext.xml,加入对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. 此例子程序运行结果
分享到:
评论
8 楼 lyh20081984 2008-11-21  
这个功能可以可以运行,但是在我后来的开发中却遇到了一个问题,让我不得不放弃现在上述的配置:

因为我在一个jsp页面需要得到数据库中的表所有记录,因此我必须在页面上手动得到spring工厂:

   ApplicationContext app = new ClassPathXmlApplicationContext(
"applicationContext.xml");
BeanFactory beans = app;

在此就出现了问题,有可能是我改变了spring配置xml文件的文头件导致认不到..错误如下:


IllegalStateException: WebApplicationObjectSupport instance [org.directwebremoting.spring.。。。。
7 楼 huanglppp 2008-08-26  
你的例子,运行起来,UserAjaxHelper.checkUsername(username,showUsermsg);
中的UserAjaxHelper未定义,好像获不到Spring中的javascript实例
6 楼 kjj 2008-08-10  
我按照官方那个整合配置,结果原来用dwr文件配置的不能用,好像是不认识类型错误。
5 楼 paradise2009 2008-07-29  
我运行是出现:

严重: Error listenerStart
2008-7-29 17:05:15 org.apache.catalina.core.StandardContext start
严重: Context [/springdwr] startup failed due to previous errors
2008-7-29 17:05:15 org.apache.coyote.http11.Http11BaseProtocol start
信息: Starting Coyote HTTP/1.1 on http-8080
2008-7-29 17:05:16 org.apache.jk.common.ChannelSocket init
信息: JK: ajp13 listening on /0.0.0.0:8009
2008-7-29 17:05:16 org.apache.jk.server.JkMain start
信息: Jk running ID=0 time=0/51  config=null
2008-7-29 17:05:16 org.apache.catalina.storeconfig.StoreLoader load
信息: Find registry server-registry.xml at classpath resource
2008-7-29 17:05:17 org.apache.catalina.startup.Catalina start
信息: Server startup in 5676 ms            

我用的是springframework-2.5.jar包。提示好像是spring的监听器启动不了。
会是包的兼容性问题么?

             
4 楼 lveyo 2008-07-24  
javaprograms看看是不是你的dwr的包的版本不对呢
3 楼 kjj 2008-07-23  
哈哈,好啊
2 楼 javaprograms 2008-07-22  
严重: Context initialization failed
org.springframework.beans.factory.parsing.BeanDefinitionParsingException: Configuration problem: Unable to locate NamespaceHandler for namespace [http://www.directwebremoting.org/schema/spring-dwr]
Offending resource: ServletContext resource [/WEB-INF/applicationContext.xml]

我运行你的例子报 这个错误  不知到 是那里 有 问题 
1 楼 qphy2000 2008-05-21  
正在学习DWR,,,非常感谢

相关推荐

    dwr+springJdbc例子

    本示例"dwrspringjdbc"探讨了如何将Direct Web Remoting (DWR)、Spring框架和Java Database Connectivity (JDBC)有效地结合在一起。这三个技术在Web开发中扮演着重要的角色,下面将分别介绍它们的核心概念和在项目中...

    Dwr2+Struts2+Spring2.5+Hibernate3实战——用户登录注册系统

    在本文中,Dwr2被用来验证用户注册时的用户名是否唯一,简化了Ajax的实现,提供了一种对Ajax的高级封装。 Spring2.5作为企业级应用的IoC(Inversion of Control)和AOP(Aspect-Oriented Programming)容器,负责...

    Ajax(DWR) + Spring + Hibernate + Struts整合登陆注册

    这个小例子将这四个框架整合在一起,用于实现一个登录注册系统,提供了从客户端到服务器端的数据交互、持久化数据管理以及业务逻辑处理的完整解决方案。 首先,让我们逐一解析这四个技术: 1. **Ajax**...

    dwr与spring一起使用的方法

    将DWR与Spring结合使用,可以构建出高度交互的、动态的Web应用。 首先,让我们深入理解DWR的核心功能。DWR的主要目标是简化Ajax(Asynchronous JavaScript and XML)开发,它通过在客户端和服务器之间创建透明的...

    dwr基础_dwr兼容三大框架+视频

    总的来说,这个资源对于想要学习DWR,并希望在实际项目中结合Spring、Struts2和Hibernate使用的开发者来说非常有价值。通过视频和文档,你可以深入理解DWR的工作原理,以及如何在三大框架中无缝集成DWR,提高开发...

    dwr整合ssh综合实例

    Struts2 Actions处理用户的请求,Spring管理业务逻辑和服务,Hibernate处理数据库交互,而DWR则作为前后端之间的桥梁,提供实时通信。 整合DWR与SSH的过程中,我们还需要考虑安全性、性能优化以及错误处理等问题。...

    dwr使用教程.docx

    例如,在用户注册的场景中,用户填写完表单后,点击“提交”按钮,JavaScript会调用`DWRUserAccess.save`,并将表单数据传给服务器。服务器处理后,通过回调函数将结果返回给前端,前端再根据返回的结果进行后续处理...

    ssh+ajax+dwr_freemarker

    在“ssh_register_7”这个例子中,可能包含了用户注册和登录的实现。在SSH框架下,Struts通常负责接收并处理用户的注册请求,Hibernate处理数据库交互,如用户信息的存储。同时,Ajax和DWR可能被用来实现实时的...

    DWR中文文档

    8. **DWR与Spring框架集成**:如果项目使用Spring框架,该部分将指导如何将DWR与Spring无缝集成,利用Spring的依赖注入和AOP(面向切面编程)特性。 9. **实战示例**:通过实际的Web应用案例,展示DWR在开发中的...

    AJAX实践DWR篇

    在用户注册的例子中,DWRUserAccess类作为桥梁,将JavaScript的请求转发给UserDAO,完成用户数据的保存和查找。当用户点击“提交”按钮时,JavaScript代码调用DWRUserAccess.js中的save方法,传递用户输入的信息。...

    struts+ajax实例

    在J2EE开发中,Struts2框架和AJAX技术的结合使用能够提供更优秀的用户体验,特别是在处理表单验证和实时交互方面。本实例主要讲解如何在Struts2中集成AJAX,实现注册用户的即时用户名可用性检查。这个功能对于防止...

Global site tag (gtag.js) - Google Analytics