第一次DWR+Spring尝试

一、概述

    DWR是一个web远程调用框架,可以让ajax使用起来更方便;
    DWR+Spring大致原理是,通过在web.xml和applicationContext.xml这两个配置文件上分别配置相关Servlet和业务类DAO/Service,然后通过dwr.xml配置Spring上bean类的id名以及自动生成javascript的js文件名。
    这样就完成了DWR最基础的配置。
    服务器开启完毕后,dwr会自动生成js文件,如下:

    
    <script type= 'text/javascript' src ='<%=basePath%> dwr/engine.js'></script > 
    <script type='text/javascript' src= '<%=basePath %>dwr/util.js'></ script>
    <script type='text/javascript' src=' <%=basePath %>dwr/interface/DWRUser.js'></ script>

    
     这里注意一定要按顺序配置!!!以上顺序不能乱!
    其中,最后一个 DWRUser.js 为dwr.xml配置自动生成的js文件,并且该文件对应的是applicationContext.xml注入的DAO/Service类。

    最后通过js将参数传入DWRUser类对应的方法(js下方法名和类中方法名一致),并且只能允许返回boolean类型的值 。

    指定一个回调函数(callback),该回调函数只能接受boolean类型的返回参数,并根据该返回参数进行js操作。

     至于持久层操作,这里将完全忽略不述。

二、附上相关代码(验证用户注册邮箱是否已经存在)
//注入的DAO类
package org.dwr.registervalidator;

import org.dao.business.BusinessDAO;

public class CheckBusReg {
    BusinessDAO businessDAO;
	public BusinessDAO getBusinessDAO() {
		return businessDAO;
	}
	public void setBusinessDAO(BusinessDAO businessDAO) {
		this.businessDAO = businessDAO;
	}
    
	public boolean checkEmail(String bemail){

		return this.businessDAO.checkEmailIfExisted(bemail);
		
	}
	
}

//applicationContext.xml
<?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:p="http://www.springframework.org/schema/p"
    xmlns:tx="http://www.springframework.org/schema/tx"
    xsi:schemaLocation= "http://www.springframework.org/schema/beans
     http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
     http://www.springframework.org/schema/aop
     http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
     http://www.springframework.org/schema/tx
     http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
     http://www.directwebremoting.org/schema/spring-dwr
     http://www.directwebremoting.org/schema/spring-dwr-2.0.xsd" >

    <!-- DWR AJAX类注入 -->
    <bean id="ChkBus" class= "org.dwr.registervalidator.CheckBusReg" >     
    <property name="businessDAO" ref="businessDAO"/>
    </bean >


</ beans>


//web.xml
 <!-- 配置dwr -->
<servlet>  
  <servlet-name >dwr-invoker</ servlet-name> 
  <servlet-class >uk.ltd.getahead.dwr.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 >


<!-- 指定以 Listerner方式启动Spring -->
<listener>
       <listener-class >
           org.springframework.web.context.ContextLoaderListener
       </listener-class >
</listener>
<!-- 制定Spring配置文件的位置 -->
    <context-param >
       <param-name >contextConfigLocation </param-name>
       <param-value >
         classpath:applicationContext.xml
       </param-value >
    </context-param >
 
    <filter >
       <filter-name >struts2 </filter-name>
       <filter-class >
              org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
       </filter-class >
    </filter >
    <filter-mapping >
       <filter-name >struts2 </filter-name>
       <url-pattern >/* </url-pattern>
    </filter-mapping >

//WEB-INF/dwr.xml
<?xml version= "1.0" encoding ="UTF-8"?>
<!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 2.0//EN" "http://www.getahead.ltd.uk/dwr/dwr20.dtd" >
<dwr>
        <allow>
        <!-- creator是spring,原因是和spring整合,DWRUser表示实例转换成 js语言后以DWRUser命名,前台页面可以通过代码(<script type='text/ javascript' src='../../dwr /interface/DWRUser.js'></script>)来调用 -->
      <create creator="spring" javascript="DWRUser" >
                             <!-- 此处DWRUser为spring配置文件中某个bean的id值 -->  
        <param name= "beanName" value ="ChkBus"/>  
      </create > 
        </allow>
</dwr>




//BusReg.jsp
<%@ page language="java" import= "java.util.*" pageEncoding ="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://" +request.getServerName()+":"+request.getServerPort()+path+ "/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head >
    <base href="<%= basePath%> ">
    
    <script type='text/javascript' src= '<%=basePath %>dwr/engine.js'></ script> 
    <script type='text/javascript' src= '<%=basePath %>dwr/util.js'></ script>
    <script type='text/javascript' src=' <%=basePath %>dwr/interface/DWRUser.js'></ script>
    <script type="text/javascript" src=" <%=basePath %>js/jquery-1.7.2.min.js"></ script>
    <title >商家注册页 </title>
   
        <meta http-equiv="pragma" content="no-cache">
        <meta http-equiv="cache-control" content="no-cache">
        <meta http-equiv="expires" content="0">    
        <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
        <meta http-equiv="description" content="This is my page">
        <!--
       <link rel="stylesheet " type="text/css" href="styles.css">
       -->

  </head >
 
  <body >
   <script type= 'text/javascript' > 
 
 function regUserChked(){
  if ( typeof window['DWRUtil' ] == 'undefined')
      window.DWRUtil = dwr.util;  
  var bemail=document.login.bemail.value;
 
  DWRUser.checkEmail(bemail,showData); //showData回调函数
 }  
 function showData(data){  
     if(data){  
          DWRUtil.setValue( "userMsg","该用户名已经被注册,请更换您的用户名!" );  
     } else{  
          DWRUtil.setValue( "userMsg","恭喜您,该用户名尚未被注册!" );        
     }  
 }  
</ script>
    <form action="buslogin" method= "post" name ="login">
                         邮箱: <input type= "text" name ="bemail"  οnblur="regUserChked()" /><div id= "userMsg"></div ><br/>
                         密码: <input type= "password" name ="bpass"/>< br/>
           <input type= "submit" value ="提交"/>              
    </form >
  </body >
</html>





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值