DWR(Direct Web Remoting)是一个用于改善web页面与Java类交互的远程服务器端Ajax开源框架,可以帮助开发人员开发包含AJAX技术的网站。它可以允许在浏览器里的代码使用运行在WEB服务器上的JAVA函数,就像它就在浏览器里一样。
 

一:基本步骤:
    1.为工程添加jar包:dwr.jar   common-logging.jar
    如果本工程使用struts,则struts内置了common-logging.jar,不需要重复引入
    2.web.xml部分,添加dwr的servlet配置
        <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>
        注意:
            <init-param>
                <param-name>debug</param-name>
                <param-value>true</param-value>
            </init-param>
            该配置项是开启dwr控制台的开关,如果该项为false,则dwr控制台失效.
    3.在/WEB-INF下建立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="test">
                    <param name="class" value="test.TestDao" />
                </create>
                <!-- 如果需要实体类,则需要配置为如下  match:类路径 converter="bean":固定参数 -->
                <convert match="bean.*" converter="bean"></convert>
            </allow>
        </dwr>
        注意:creator="new" 代表本类的创建方式
        javascript="test" 代表本类在javascript中的名称
        name="class" 代表把某个类配置到dwr中 value="":代表类路径
    4.建立相关的类:
        package test;
        public class TestDao {
            public void hello(){
                System.out.println("Hello JavaScript . . .");
            }
            public void sayHello(String name){
                System.out.println("Hello " + name);
            }
            public int add(int a , int b){
                return a+b;
            }
        }
    5.把工程部署到tomcat中,通过下列地址测试dwr环境是否完成:
        http://ip:port/appName/dwr
        如果看到控制台,点击进入,测试方法是否可以正常运行
    6.在需要调用dwr相关资源的页面中,按照控制台的提示cope资源:
        <script type='text/javascript' src='${pageContext.request.contextPath }/dwr/interface/test.js'></script>
        <script type='text/javascript' src='${pageContext.request.contextPath }/dwr/engine.js'></script>
    7.调用dwr资源的脚本写法:
        dwr名称.方法名称(参数... ,{
            callback:function(返回值){
                处理返回的逻辑块
            }
        })
        例如:
            test.hello();
            test.sayHello("诡异小孩");
            test.add(10,10,{
                    callback:function(data){
                        alert(data);
                    }
                });
            test.add(10,10,callback);
            function callback(data){
                alert(data);
            }

二:基本应用:
    返回数据解析:
        1.简单对象:
            test.getTest({
                callback:function(data){
                        alert(data.id+":"+data.name+":"+data.age+":"+data.sex+":"+data.birthday);
                }
            });
        2.简单列表:
            test.queryForList({
                callback:function(data){
                    for(var i=0;i<data.length;i++){
                        alert(data[i]);
                    }
                }
            });
        3.对象列表:
        test.queryAll({
            callback:function(data){
                for(var i=0;i<data.length;i++){
                    alert(data[i].id+":"+data[i].name+":"+data[i].age+":"+data[i].sex+":"+data[i].birthday);
                }
            }
        });
        4.向后台传对象:
            var myObject={'id':108,'name':'小

白','age':24,'sex':'女','birthday':'1989-11-01'};
            test.setObject(myObject);
           
    参数解析:
        preHook:交互结束之前执行
        callback:交互结束之后返回
        postHook:在返回结束之后执行
        timeout:设置响应超时时间
        errorHandler:设置异常捕获
        test.query({
                    callback:function(data){alert("处理返回"+data);},
                    preHook:function(){alert("返回之前...");},
                    timeout:4000,
                    errorHandler:function(msg){alert("如果响应时间超过timeout的值,则服务器超时...");}
                });

dwr使用步骤的更多相关文章

  1. DWR入门教程

    DWR(Direct Web Remoting)是一个WEB远程调用框架.利用这个框架可以让AJAX开发变得很简单.利用DWR可以在客户端利用JavaScript直接调用服务端的Java方法并返回值给 ...

  2. DWR入门的例子(一个)

    DWR(Direct Web Remoting)是WEB远程调用框架.使用这种框架使AJAX发展至今已成为非常easy.使用DWR能client利用JavaScript直接调用服务端的Java方法并返 ...

  3. DWR组件——基于远程过程调用实现Ajax

    转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6686115.html  一:DWR的用途 DWR(Direct Web Remoting)是一个Web远程调用 ...

  4. [JavaEE] DWR入门教程

    DWR(Direct Web Remoting)是一个WEB远程调用框架.利用这个框架可以让AJAX开发变得很简单.利用DWR可以在客户端利用JavaScript直接调用服务端的Java方法并返回值给 ...

  5. DWR实现扫一扫登录功能

    前言 <DWR实现后台推送消息到Web页面>一文中已对DWR作了简介,并列出了集成步骤.本文中再一次使用到DWR,用以实现扫一扫登录功能. 业务场景 web端首页点击"登陆&qu ...

  6. 基于注解的DWR使用

    dwr3.0支持使用注解,如果不喜欢配置dwr.xml文件,注解是个不错的方法,简单快捷. 步骤如下: 1.配置web.xml文件,需要在DwrServlet里加classes初始化参数: <i ...

  7. 有关dwr推送的笔记

    想做一个web推送相关的东东,昨天搞了一天,终于把这些杂乱的配制弄清了,今天写出来方便以后记住,也方便大家看一下吧 1:引入dwr包,我用的是maven <dependency> < ...

  8. DWR基本配置

    DWR——Direct Web Remoter Servlet 供给那些想要以一种简单的方式使用Ajax和XMLHttpRequest的开发者.它具有一套JavaScript功能集,它们把从HTML页 ...

  9. 采用DWR、maven保存数据到数据库

    一.原理: Ajax是时下比较流行的一种web界面设计新思路,其核心思想是从浏览器获取XMLHttp对象与服务器端进行交互. DWR(Direct Web Remoting)就是实现了这种Ajax技术 ...

随机推荐

  1. hdoj 2059 :龟兔赛跑 (DP)[转]

      转的别人的找了很多就这个比较好理解.   Problem Description 据说在很久很久以前,可怜的兔子经历了人生中最大的打击——赛跑输给乌龟后,心中郁闷,发誓要报仇雪恨,于是躲进了杭州下 ...

  2. Win7 登入提示临时漫游档案

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList

  3. 从数学角度看最大期望(EM)算法 I

    [转载请注明出处]http://www.cnblogs.com/mashiqi 2014/11/18 更新.发现以前的公式(2)里有错误,现已改过来.由于这几天和Can讨论了EM算法,回头看我以前写的 ...

  4. UI学习笔记---第七天

    UIScrollView   滚动视图 UIScrollView的常用属性 iPone屏幕大小限制了内容的显示,UIScrollView 类提供了屏幕滚动功能 UIScrollView是所有滑动视图的 ...

  5. ZOJ 1188 DNA Sorting

    原题链接 题目大意:给定一串字符串,查找字符串里字母逆序排列的对数,按照由少到多的顺序把所有字符串进行排列. 解法:用C++字符串string类的iterator,从每个字符串的起始开始,查找逆序字符 ...

  6. HDU 4599 概率DP

    先推出F(n)的公式: 设dp[i]为已经投出连续i个相同的点数平均还要都多少次才能到达目标状态. 则有递推式dp[i] = 1/6*(1+dp[i+1]) + 5/6*(1+dp[1]).考虑当前这 ...

  7. Docker网络管理

    一.Docker的四种网络模式(host.container.none.bridge) 1. host模式,使用docker run时使用--net=host指定,docker使用的网络实际上和宿主机 ...

  8. sql中的字符串匹配、函数大全

    假设你想建立一个与Yahoo功能相似的Internet目录.你可以建立一个表用来保存一系列的站点名称,统一资源定位器(URL),描述,和类别,并答应访问者通过在HTML form中输入要害字来检索这些 ...

  9. 目前用到最全的datagrid(easyui)

    包含checkbox.复合表头.多行可编辑单元格.combobox单元格,就差上次做的table中每行中的关联检索combobox单元格了.目前已修改为单行编辑,多行编辑时的check有问题 $(&q ...

  10. HDU-1255 覆盖的面积 (扫描线)

    题目大意:给若干个矩形,统计重叠次数不为0的面积. 题目分析:维护扫描线的长度时,只需要只统计覆盖次数大于1的区间即可.这是个区间更新,不过不能使用懒标记,但是数据规模不大,不用懒惰标记仍可以AC. ...