网站首页  汉语字词  英语词汇  考试资料  写作素材  旧版资料

请输入您要查询的范文:

 

标题 DWR中各种java方法的调用
范文
    DWR是一个框架,简单的说就是能够在javascript直接调用java方法,而不必去写一大堆的javascript代码。它的实现是基于ajax的,可以实现无刷新效果。不少DWR的例子,但大都只是某种方法的调用只在使用层面上介绍DWR,并不涉更多的技术与设计javascript中是如何调用的。
    DWR是一个框架,简单的说就是能够在javascript直接调用java方法,而不必去写一大堆的javascript代码。它的实现是基于ajax的,可以实现无刷新效果。
    网上有不少DWR的例子,但大都只是某种方法的调用,本文只在使用层面上介绍DWR,并不涉更多的技术与设计,其目的是让初学者能够很快的学会各种java方法在javascript中是如何调用的。
    一、dwr配置篇之web.xml
    1、最小配
    <servlet>
     <servlet-name>dwr-invoker</servlet-name>
     <servlet-class>uk.ltd.getahead.dwr.DWRServlet</servlet-class>
    </servlet>
    <servlet-mapping>
     <servlet-name>dwr-invoker</servlet-name>
     <url-pattern>/dwr/*</url-pattern>
    </servlet-mapping>
    2、当我们想看DWR自动生成的测试页(Using debug/test mode)时,可在servlet配置中加上
    <init-param>
     <param-name>debug</param-name>
     <param-value>true</param-value>
    </init-param>
    这个参数DWR默认是false。如果选择true,我们可以通过http://localhost:port/app/dwr看到你部署的每个DWR class。并且可以测试java代码的每个方法是否运行正常。为了安全考虑,在正式环境下你一定把这个参数设为false。
    3、多个dwr.xml文件的配置
    可能有几种情况,我们一一列举。一个servlet,多个dwr.xml配置文件;多个servlet,每个servlet对应一个或多个dwr.xml配置文件。
    3.1、一个servlet,多个dwr.xml配置文件
    <servlet>
     <servlet-name>dwr-invoker</servlet-name>
     <servlet-class>uk.ltd.getahead.dwr.DWRServlet</servlet-class>
     <init-param>
      <param-name>config-1</param-name>
      <param-value>WEB-INF/dwr1.xml</param-value>
     </init-param>
     <init-param>
      <param-name>config-2</param-name>
      <param-value>WEB-INF/dwr2.xml</param-value>
     </init-param>
    </servlet>
    在这种配置下,param-name的值必须以config开头。param-name可以有>=0个。如果没有param-name,那么将会读取WEB-INF/dwr.xml。如果有大于零个param-name,那么WEB-INF/dwr.xml文件将不会被读取。
    3.2、多个servlet,每个servlet对应一个或多个dwr.xml
    <servlet>
     <servlet-name>dwr-invoker</servlet-name>
     <servlet-class>uk.ltd.getahead.dwr.DWRServlet</servlet-class>
    </servlet>
    <servlet>
     <servlet-name>dwr-invoker1</servlet-name>
     <servlet-class>uk.ltd.getahead.dwr.DWRServlet</servlet-class>
     <init-param>
      <param-name>config-admin</param-name>
      <param-value>WEB-INF/dwr1.xml</param-value>
     </init-param>
     <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>
    <servlet-mapping>
     <servlet-name>dwr-invoker1</servlet-name>
     <url-pattern>/dwr1/*</url-pattern>
    </servlet-mapping>
    在这种情况下,我们可以根据J2EE security来控制权限,针对不同url,加不同的角色。
    二、dwr使用篇
    1、调用没有返回值和参数的JAVA方法
    1.1、dwr.xml的配置
    <dwr>
    <allow>
    <create creator="new" javascript="testClass" >
    <param name="class" value="com.dwr.TestClass" />
    <include method="testMethod1"/>
    </create>
    </allow>
    </dwr>
    标签中包括可以暴露给javascript访问的东西。
    标签中指定javascript中可以访问的java类,并定义DWR应当如何获得要进行远程的类的实例。creator="new"属性指定java类实例的生成方式,new意味着DWR应当调用类的默认构造函数来获得实例,其他的还有spring方式,通过与IOC容器Spring进行集成来获得实例等等。javascript=" testClass "属性指定javascript代码访问对象时使用的名称。
    标签指定要公开给javascript的java类名。
    标签指定要公开给javascript的方法。不指定的话就公开所有方法。
    标签指定要防止被访问的方法。
    1.2、javascript中调用
    首先,引入javascript脚本
    <script src='dwr/interface/ testClass.js'></script>
    <script src='dwr/engine.js'></script>
    <script src='dwr/util.js'></script>
    其中TestClass.js是dwr根据配置文件自动生成的,engine.js和util.js是dwr自带的脚本文件。
    其次,编写调用java方法的javascript函数
    Function callTestMethod1(){
      testClass.testMethod1();
    }
    2、调用有简单返回值的java方法
    2.1、dwr.xml的配置
    配置同1.1
    <dwr>
    <allow>
    <create creator="new" javascript="testClass" >
    <param name="class" value="com.dwr.TestClass" />
    <include method="testMethod2"/>
    </create>
    </allow>
    </dwr>
    2.2、javascript中调用
    首先,引入javascript脚本
    其次,编写调用java方法的javascript函数和接收返回值的回调函数
    Function callTestMethod2(){
    testClass.testMethod2(callBackFortestMethod2);
    }
    Function callBackFortestMethod2(data){
    //其中date接收方法的返回值
    //可以在这里对返回值进行处理和显示等等
    alert("the return value is " + data);
    }
    其中callBackFortestMethod2是接收返回值的回调函数
    3、调用有简单参数的java方法
    3.1、dwr.xml的配置
    配置同1.1
    <dwr>
    <allow>
    <create creator="new" javascript="testClass" >
    <param name="class" value="com.dwr.TestClass" />
    <include method="testMethod3"/>
    </create>
    </allow>
    </dwr>
    3.2、javascript中调用
    首先,引入javascript脚本
    其次,编写调用java方法的javascript函数
    Function callTestMethod3(){
    //定义要传到java方法中的参数
    var data;
    //构造参数
    data = “test String”;
    testClass.testMethod3(data);
    }
    4、调用返回JavaBean的java方法
    4.1、dwr.xml的配置
    <dwr>
    <allow>
    <create creator="new" javascript="testClass" >
    <param name="class" value="com.dwr.TestClass" />
    <include method="testMethod4"/>
    </create>
    <convert c match=""com.dwr.TestBean">
    <param name="include" value="username,password" />
    </convert>
    </allow>
    </dwr>
    标签负责公开用于Web远程的类和类的方法,标签则负责这些方法的参数和返回类型。convert元素的作用是告诉DWR在服务器端Java 对象表示和序列化的JavaScript之间如何转换数据类型。DWR自动地在Java和JavaScript表示之间调整简单数据类型。这些类型包括Java原生类型和它们各自的封装类表示,还有String、Date、数组和集合类型。DWR也能把JavaBean转换成JavaScript 表示,但是出于安全性的原因,要求显式的配置,标签就是完成此功能的。c属性指定转换的方式采用JavaBean命名规范,match=""com.dwr.TestBean"属性指定要转换的javabean名称,标签指定要转换的JavaBean属性。
    4.2、javascript中调用
    首先,引入javascript脚本
    其次,编写调用java方法的javascript函数和接收返回值的回调函数
    其中callBackFortestMethod4是接收返回值的回调函数
    5、调用有JavaBean参数的java方法
    5.1、dwr.xml的配置
    <dwr>
    <allow>
    <create creator="new" javascript="testClass" >
    <param name="class" value="com.dwr.TestClass" />
    <include method="testMethod5"/>
    </create>
    <convert c match="com.dwr.TestBean">
         <param name="include" value="username,password" />
    </convert>
    </allow>
    </dwr>
    5.2、javascript中调用
    首先,引入javascript脚本
    其次,编写调用java方法的javascript函数
    Function callTestMethod5(){
         //定义要传到java方法中的参数
      var data;
      //构造参数,date实际上是一个object
      data = { username:"user", password:"password" }
      testClass.testMethod5(data);
    }
    并且在dwr.xml中增加如下的配置段
    <signatures>
    <![CDATA[
    import java.util.List;
    import com.dwr.TestClass;
    import com.dwr.TestBean;
    TestClass.testMethod7(Map<String,TestBean>);
    ]]>
    </signatures>
    3、由以上可以发现,对于java方法的返回值为List(Set)的情况,DWR将其转化为Object数组,传递个javascript;对于java方法的返回值为Map的情况,DWR将其转化为一个Object,其中Object的属性为原Map的key值,属性值为原Map相应的value值。
    4、如果java方法的参数为List(Set)和Map的情况,javascript中也要根据3种所说,构造相应的javascript数据来传递到java中。
随便看

 

在线学习网范文大全提供好词好句、学习总结、工作总结、演讲稿等写作素材及范文模板,是学习及工作的有利工具。

 

Copyright © 2002-2024 cuapp.net All Rights Reserved
更新时间:2025/5/14 5:55:58