`
可爱の小猪
  • 浏览: 107543 次
  • 性别: Icon_minigender_1
  • 来自: 南充
社区版块
存档分类
最新评论

DWR详细配置及例子(可以通过下载测试)

阅读更多
Struts+Spring+Hibernate+dwr 实现省市区三级联动

参考了网上一些资料,总结的Struts+Spring+Hibernate+dwr 实现省市区三级联动

Struts+Spring+Hibernate的配置就省了........

1).这里主要需要说明的是在web.xml里面需要配置如下:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.4"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee   http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

................

   <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>

...............

</web-app>

2)dwr配置 将dwr.jar 复制于WEB-INF/lib 目录下。

3.)然后在web.xml的同目录下,创建一个dwr.xml,配置如下:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 0.4//EN" "http://www.getahead.ltd.uk/dwr/dwr.dtd">
<dwr>
   <allow>
    <create creator="new" javascript="JDate">
      <param name="class" value="java.util.Date"/>
    </create>
    <create creator="new" javascript="province">
      <param name="class" value="com.crb2b.util.Province"/>
    </create>
</allow>
</dwr>

4).对于dwr.xml需要说明的是:
       1.creator:定义供javascript调用的新建对象的方法,也即对象的构造方法。其可以包括【new,none,scripted,spring,jsf,struts,pageflow,ejb3】关于creator的具体用法,可以参照http://getahead.org/dwr/server/dwrxml/creators
      2.javascript:java类暴露给浏览器所调用的javascript的名称,也就是在jsp页面所出现的js的名称一定和此处所定义的一致。
      3.param:指定create元素所需要的参数,比如其允许创建的java类的名称。
      4.name:param元素所指定的参数名称。
      5.value:param元素所指定的参数值。

5)相关类:Province类 提供给js调用;FindLimitData 类进行数据处理类。

Province类 如下:

package com.crb2b.util;

import java.util.List;
import java.util.Map;

import com.crb2b.struts.action.FindLimitData;

public class Province {

      private FindLimitData limitData = null;

public Province() {
   init();
}

void init() {
   limitData = FindLimitData.getInstance();
}

public Map getProvice() {
   return limitData.getProvice();
}

public Map getSelectOption(String id) {
   return limitData.getSelectOption(id);
}

}

 

private FindLimitData limitData = null;

public Province() {
   init();
}

void init() {
   limitData = FindLimitData.getInstance();
}

public Map getProvice() {
   return limitData.getProvice();
}

public Map getSelectOption(String id) {
   return limitData.getSelectOption(id);
}

 

FindLimitData 类如下

package com.crb2b.struts.action;

import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import org.apache.log4j.LogManager;
import org.apache.log4j.Logger;

import com.crb2b.data.bo.City;
import com.crb2b.data.bo.County;
import com.crb2b.util.Province;

public class FindLimitData extends BaseAction {

private static final Logger LOGGER = LogManager
    .getLogger(FindLimitData.class);

static private FindLimitData limitdata = null; // 唯一实例
static private List citylist = null;
static private List countylist = null;

public FindLimitData() {
   super();
}

static synchronized public FindLimitData getInstance() {
   if (null == limitdata)
     limitdata = new FindLimitData();
    return limitdata;
}

   public List findCountyAll() {
     return this.getCountyService().findCountyAll();
}

public List findCityAll() {
     return this.getCityService().findCityAll();

}

public List findProvinceAll() {
     return this.getProvinceService().findProvinceAll();
}

   public Map getProvice() {
      return this.getProvinceService().getProvice();
}

public Map getSelectOption(String id) {
   String strId = id;
   if (id.indexOf("-") >= 0) {
    String[] splitID = strId.split("-");
    if (countylist == null)
     countylist = this.findCountyAll();
    Iterator it = countylist.iterator();
    Map map = null;
    map = new HashMap();
    while (it.hasNext()) {
     County county = (County) it.next();
     String pid = county.getCounPid();
     String cid = county.getCounCid();
     String ccid = county.getCounCcid();
     String ccname = county.getCounName();
     if (pid.equals(splitID[0]) && cid.equals(splitID[1])) {
      map.put(pid + "-" + cid + "-" + ccid, ccname);
     }
    }
    Map map1 = null;
    map1 = new HashMap();
    map1 = map;
    return map1;
   } else {
    if (citylist == null)
     citylist = this.findCityAll();
    Iterator it = citylist.iterator();
    Map map = null;
    map = new HashMap();
    while (it.hasNext()) {
     City city = (City) it.next();
     String pid = city.getCityPid();
     String cid = city.getCityCid();
     String cname = city.getCityName();
     LOGGER.debug(pid + ":" + strId);
     if (pid.equals(strId)) {
      map.put(pid + "-" + cid, cname);
     }
    }
    Map map1 = null;
    map1 = new HashMap();
    map1 = map;
    return map1;
   }
}
}

6)至此我们需要测试一下,看看配置的DWR是否正确,启动Tomcat,通过访问http://localhost:8080/yourwebappname/dwr,出现界面说明配置成功,再进行相关方法调用测试。

 

7)index.jsp页面

<%@ page language="java" contentType="text/html; charset=GBK"%>
<%@ page import ="java.util.*,com.crb2b.util.*" %>
<%@ taglib uri="http://java.sun.com/jstl/core_rt" prefix="c"%>
<%@taglib uri="/WEB-INF/struts-bean.tld" prefix="bean"%>
<%@taglib uri="/WEB-INF/struts-html.tld" prefix="html"%>
<%@taglib uri="/WEB-INF/struts-logic.tld" prefix="logic"%>

<%

   com.crb2b.util.Province province=new com.crb2b.util.Province();

Map map =null;   //初始省份信息。
   map=province.getProvice();
   if (map.size() != 0)
{
   session.setAttribute("map", map);
}

%>

............

<script type="text/javascript" src="dwr/interface/province.js"></script>
<script type="text/javascript" src="dwr/engine.js"></script>
<script type="text/javascript" src="dwr/util.js"></script>

<script language="javascript">
// 根据选择的省,获得其所辖的市  
    function getCity(){
       var obj_Pro = document.getElementById("Province");
       var obj_City = document.getElementById("City");
       var obj_County = document.getElementById("County");
       var pro_Index = obj_Pro.selectedIndex;   
       var pro_Value = obj_Pro.options[pro_Index].value;
       var mydata=null;
       if(pro_Value != "" && pro_Value != null){    
        province.getSelectOption(pro_Value,cityReturn);   
        }else{
        DWRUtil.removeAllOptions(obj_City);
     DWRUtil.addOptions(obj_City,{'':'请选择'});
        DWRUtil.removeAllOptions(obj_County);
     DWRUtil.addOptions(obj_County,{'':'请选择'});
       }
    }
    // 回调函数
    function cityReturn(data){   

     var obj_City = document.getElementById("City");
       var obj_County = document.getElementById("County");      
       DWRUtil.removeAllOptions(obj_City);
    DWRUtil.addOptions(obj_City,{'':'请选择'});
    DWRUtil.removeAllOptions(obj_County);
    DWRUtil.addOptions(obj_County,{'':'请选择'});  
    DWRUtil.addOptions(obj_City,data);    
      

    }
    // 根据选择的市,获得所辖的县
    function getCounty(){
       var obj_Pro = document.getElementById("Province");
       var obj_City = document.getElementById("City");
       var obj_County = document.getElementById("County");
       var city_Index = obj_City.selectedIndex;
       var city_Value = obj_City.options[city_Index].value;
       if(city_Value != "" && city_Value != null){    
        province.getSelectOption(city_Value,countyReturn);
       }else{
        DWRUtil.removeAllOptions(obj_County);
     DWRUtil.addOptions(obj_County,{'':'请选择'});
       }
    }
    // 回调函数
    function countyReturn(data){
       var obj_County = document.getElementById("County");
       DWRUtil.removeAllOptions(obj_County);
    DWRUtil.addOptions(obj_County,{'':'请选择'});
    DWRUtil.addOptions(obj_County,data);
    }
    </script>

......................

<td>房屋所在省份</td>
<td>
<html:select value="" property="Province" onchange="getCity()">
<html:option value="">==所有省份==</html:option>
<c:forEach items="${map}" var="hashMap">
<html:option value="${hashMap.key}"><c:out value="${hashMap.value}" /></html:option>     
</c:forEach>
</html:select>
</td>
</tr>
<tr>
<td>房屋所在城市</td>
<td>
<html:select value="" property="City" onchange="getCounty()">
<html:option value="">==所有城市==</html:option>  
</html:select></td></tr>
<tr>
<td>区域</td>
<td><html:select value="" property="County" >
<html:option value="">==所有区域==</html:option>
</html:select><br></td></tr>
<tr>

......................

8)对于index.jsp需要说明的是:

   需要引用三个js,province.js[其与dwr.xml里面的javascript的名称相同],engine.js,util.js。其中对于province.js是由dwr自动生成的javascript文件,包括相应的类以及方法。dwr/engine.js是dwr的核心引擎脚本处理客户端调用的转换,dwr/util.js包含了工具函数简化页面处理。

9)正式运行页面,看结果了。

 

 

注:附件含数据库文件

  • dwr.rar (2.1 MB)
  • 下载次数: 158
分享到:
评论

相关推荐

    DWR简单测试例子

    DWR(Direct Web Remoting)是一种JavaScript库,它允许Web应用程序在客户端与服务器之间进行实时的、异步的通信,而无需...通过理解和实践上述DWR测试例子,你可以更深入地掌握DWR的使用,并将其应用于实际项目中。

    dwr2.0最简单例子实用亲测试

    DWR (Direct Web Remoting) 是一个...通过这个例子,开发者可以学习到DWR的基本用法,包括如何配置、创建远程对象、调用方法以及处理返回结果。同时,理解DWR的工作机制对于开发动态、交互性强的Web应用非常有帮助。

    dwr简单例子

    4. **生成DWR配置文件** DWR会自动生成一个名为`dwr.xml`的配置文件,其中包含了所有可远程调用的Java对象及其方法的信息。开发者可以手动编辑这个文件,或者让DWR自动扫描指定的包来获取信息。 5. **JavaScript...

    springMVC整合dwr完整例子

    3. **配置DWR映射**:在dwr.xml配置文件中,你需要定义哪些Java类和方法可以被JavaScript访问。这是通过`&lt;allow&gt;`标签完成的。 4. **SpringMVC配置**:在SpringMVC的配置文件(如servlet-context.xml)中,你需要...

    DWR的配置和传值DWR的配置和传值

    以下是对DWR配置和传值的详细说明: 1. **基本配置**: 在`web.xml`中,你需要配置一个名为`dwr-invoker`的Servlet。这是DWR的核心组件,负责处理所有与客户端的交互。基本配置如下: ```xml &lt;servlet-name&gt;...

    dwr java推送例子 免积分

    它可能包含了一个简单的DWR配置,展示如何设置允许推送的Java类和方法,以及对应的JavaScript接口。此外,还可能包含了演示如何在客户端触发推送事件和接收服务器推送的JavaScript代码。 要运行这个例子,你需要: ...

    简单使用dwr完整例子

    在DWR配置中指定这些类,然后在页面加载时,DWR会自动注入相应的JavaScript代码。 5. **Struts配置**:在Struts的Action配置文件中,设置Action来处理DWR发起的请求。这些请求通常是通过DWR的JavaScript函数触发的...

    第一个DWR HelloWorld例子(附:详细说明)

    接下来,我们需要在DWR配置文件(通常为dwr.xml)中映射刚刚创建的Java类和方法。这样,DWR引擎才能识别并允许JavaScript访问。 5. **前端JavaScript代码** 在HTML页面中,我们需要引入DWR的JavaScript库,并创建...

    dwr 完整例子下载

    标题“dwr 完整例子下载”表明这是一个包含DWR实际应用的示例项目,可以帮助开发者理解如何在实际项目中使用DWR。通常,这样的示例会展示DWR的基本配置、接口定义、前端JavaScript代码以及与Spring框架集成的方法,...

    dwr实例,dwr例子,能直接运行,很实用

    1. **Java源代码**:可能包含DWR配置的Java服务类和接口,这些类和接口的方法会被前端JavaScript直接调用。 2. **HTML页面**:这些页面展示了如何在客户端使用DWR,可能包含JavaScript代码,这些代码会通过DWR引擎与...

    dwr+springJdbc例子

    在"Dwr+spring+Jdbc"的例子中,Spring框架被用来配置和管理数据源,以及JDBC相关的bean。这通常包括定义DataSource bean,以及一个或多个用于执行SQL的JdbcTemplate或JDBCTemplate的子类。Spring的这些组件使得...

    springMVC+dwr完整例子

    5. **整合SpringMVC和DWR**:将DWR集成到SpringMVC应用中,可以通过Spring的ApplicationContext获取DWR的配置,使两者协同工作。例如,可以在Controller中注入DWR的Java对象,然后通过DWR的API与前端交互。 6. **...

    DWR的相关配置

    此外,优化DWR配置,如调整缓存策略,可以提升应用性能。 7. **测试与调试**:完成配置后,通过JavaScript调用服务器端的方法进行测试,确保DWR工作正常。同时,开启调试模式可以帮助诊断任何可能出现的问题。 DWR...

    dwr简单的例子

    通过DWR,你可以轻松地在JavaScript中调用服务器端的方法,处理复杂的数据操作,实现动态更新页面,而无需刷新整个页面。DWR还提供了许多高级特性,如异步调用、数据类型转换、安全控制等,以适应更复杂的Web应用...

    Dwr最简单例子(2.0)

    1. **配置文件**:DWR的配置文件(通常为`dwr.xml`)定义了哪些Java类和方法可以被JavaScript访问。在DWR 2.0中,这个文件通常位于Web应用的WEB-INF目录下,其中包含了类白名单、安全设置等配置。 2. **逆向Ajax...

    dwr的几个小例子,dwr的几个小例子

    只需在DWR配置文件中声明相应的类,即可使用。 4. **回调函数(Callback)**: DWR支持异步调用,用户可以指定一个JavaScript回调函数来处理服务器返回的结果。这种方式增强了用户体验,因为用户界面不会因等待...

    DWR入门例子(一个很好的dwr入门例子)

    - "DwrTest"可能是包含测试用例的文件,用来验证DWR配置和功能是否正确工作。 - 它可能包括HTML页面和JavaScript代码,展示了如何在实际应用中使用DWR。 通过学习和实践这个"DWR入门例子",你可以掌握如何设置DWR...

    dwr 入门例子(eclipse 工程)

    DWR (Direct Web Remoting) 是一个开源Java库,它允许Web应用...这个入门例子是学习和理解DWR功能的一个好起点,通过实际操作,你可以深入理解DWR的工作原理以及如何在实际项目中应用它来创建无刷新的交互式Web应用。

    一个DWR例子,直接导入eclipse可运行

    DWR(Direct Web Remoting)是一个开源Java库,它允许Web应用程序在客户端JavaScript和服务器端Java之间进行实时的、...通过这个例子,你可以逐步理解DWR的工作原理和实际应用,为你的Web应用添加更丰富的交互功能。

Global site tag (gtag.js) - Google Analytics