zoukankan      html  css  js  c++  java
  • Ajax之DWR框架使用小结(1)

    DWR,Direct Web Remoting的简称是DWR,它的实现是基于Ajax的,可实现无刷新的效果。这个框架最大的优点就是可以在JS中调用Java方法,传递参数,并且可以得到返回值。它是开源(Apache)的产品。很早之前使用过DWR,今天帮师兄做作业,回顾了一番,有了更进一步的认识,所以简单总结一下它的使用方法。
    第一步:下载DWR包。
    从网站(http://directwebremoting.org/dwr/download)下载最新的dwr.jar包,放在你的Application的WEB-INF/lib目录下。
    第二步:配置web.xml文件。
    在web.xml文件的<web-app></web-app>标签中,添加如下配置:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <servlet>
    	<servlet-name>dwr-invoker</servlet-name>
    	<servlet-class>
    org.directwebremoting.servlet.DwrServlet
    </servlet-class>
      </servlet>
      <servlet-mapping>
    		<servlet-name>dwr-invoker</servlet-name>
    		<url-pattern>/dwr/*</url-pattern>
    	</servlet-mapping>
    

    第三步:配置dwr.xml文件。
    在你的Application的WEB-INF下新建dwr.xml文件,内容如下:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <?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="Pict" scope="application">
          <param name="class"  value="bean.Pict"/>
           <include method="method1" />
        </create>         
      </allow>
    </dwr>
    

    解释:
    creator="new"属性指定java类实例的生成方式。"new"意味着DWR应该调用类的默认构造函数来获得类的实例,一般我们用这个就可以搞定了。当然还有其它的方式,目前我还没有用到,就不说了。
    javascript="Pict"指定JavaScript代码访问Java对象的时候使用的名称。
    标签指定要公开给JavaScript的java类名。
    <include>标签指定要公开给JavaScript的方法,不指定的话公开所有的方法。
    第四步:在JS中调用。
    1. 引入JavaScript脚本。
    1
    2
    3
    <script language="javascript1.2" src="dwr/interface/Pict.js"></script>
    <script language="javascript1.2" src="dwr/util.js"></script>
    <script language="javascript1.2" src="dwr/engine.js"></script>
    

    其中第一个导入的标签脚本必须是手动写入,名字和<create>标签中的属性JavaScript的值相等,其后缀为.js。你只要在这里手动写入就可以了,实际由dwr根据配置文件自动生成其内容。util.js和engine.js是dwr自带的脚本文件。
    2. 编写调用java方法的JS函数。
    比如:下面是一个没有参数,没有返回值的函数调用。
    1
    2
    3
    Function callJava(){
       Pict.method1();
    }
    

    如果无参数,有返回值:
    1
    2
    3
    4
    5
    6
    Function callJava(){
       Pict.method1(retu);//retu称之为回调函数,实际就是将返回值赋给了这个函数。
    }
    Function retu(data){
       Alert(data);//这里的data的值才是实际上的方法method1的返回值。
    }
    


    如果有参数,也有返回值,可直接在方法中加入到回调函数的前面即可��
    总的来说,参数和回调函数都放在方法的括号中,遵循的原则是回调函数总是最后一个,有参数就往其前面写,没有就不用写了。


    基本上的用法如上,但还有一些细节,比如返回值是JavaBean,Map等,都需要进一步的配置,等俺明天再写。

  • 相关阅读:
    ThinkPHP—URL的访问以及各种方法的操作
    深入理解line-height与vertical-align——前端布局常用属性
    深入理解display属性——前端布局常用重要属性
    使用JQuery实现图片轮播效果
    新手之首次部署阿里云centos7+mysql+asp.net mvc core应用之需要注意的地方
    NPOI 之导入导出
    Sqlserver 还原
    SQL Server数据库状态和文件状态
    Sqlserver 备份
    单例模式
  • 原文地址:https://www.cnblogs.com/lan0725/p/1873907.html
Copyright © 2011-2022 走看看