DWR详细一

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

它包含两个主要的部分:允许 JavaScriptWEB服务器上一个遵循了 AJAX原则的 Servlet中获取数据.另外一方面一个JavaScript库可以帮助 网站开发人员轻松地利用获取的数据来动态改变网页的内容.
DWR采取了一个类似AJAX的新方法来动态生成基于JAVA类的JavaScript代码。这样WEB开发人员就可以在JavaScript里使用Java代码,就像它们是 浏览器本地代码( 客户端代码)一样;但是Java代码运行在WEB服务器端而且可以自由访问WEB 服务器的资源。出于安全的理由,WEB开发者必须适当地配置哪些Java类可以安全的被外部使用。 [1]  
这个从JAVA到JavaScript的远程功能方法给DWR的用户带来非常像传统的RPC机制,就像RMI或者SOAP一样,而且拥有运行在WEB上但是不需要 浏览器插件的好处.
DWR不认为浏览器/WEB服务器协议是重要的,而更乐于保证 编程界面的简单自然.对此最大的挑战就是把AJAX的异步特性和正常JAVA方法调用的同步特性相结合.在异步模式下,结果数据在开始调用之后的一段时间之后才可以被异步访问获取到.DWR允许WEB开发人员传递一个 回调函数,来 异步处理Java 函数调用过程.
 
2调用没有返回值和参数的Java方法
2.1、dwr.xml的配置
<dwr>
<allow>
<create creator="new" javascript="testClass" >
<include method="testMethod1"/>
</create>
</allow>
</dwr>
<allow>标签中包括可以暴露给javascript访问的东西。
<create>标签中指定javascript中可以访问的java类名,并定义DWR应当如何获得要进行远程的类的实例。creator="new"属性指定java类实例的生成方式,new意味着DWR应当调用类的 默认构造函数来获得实例,其他的还有spring方式,通过与IOC容器Spring进行集成来获得实例等等。javascript=" testClass "属性指定javascript代码访问对象时使用的名称。
<include>标签指定要公开给javascript的方法。不指定的话就公开所有方法。
<exclude>标签指定要防止被访问的方法。
注意:include和exclude不能同时存在
2.2、javascript中调用
首先,引入javascript 脚本
<script src='/[WEB-APP]/dwr/interface/ testClass.js'></script>
<script src='/[WEB-APP]/dwr/engine.js'></script>
<script src='/[WEB-APP]/dwr/util.js'></script>
其中TestClass.js是dwr根据配置文件自动生成的,engine.js和util.js是dwr自带的 脚本文件
其次,编写调用java方法的javascript函数
Function callTestMethod1(){
testClass.testMethod1();
}
3 调用有简单返回值的java方法
3.1、dwr.xml的配置
配置同1.1
<dwr>
<allow>
<create creator="new" javascript="testClass" >
<include method="testMethod2"/>
</create>
</allow>
</dwr>
3.2、javascript中调用
首先,引入javascript 脚本
其次,编写调用java方法的javascript函数和接收返回值的 回调函数
Function callTestMethod2(){
testClass.testMethod2(callBackFortestMethod2);
}
Function callBackFortestMethod2(data){
//其中data接收方法的返回值
//可以在这里对返回值进行处理和显示等等
alert("the return value is " + data);
}
其中callBackFortestMethod2是接收返回值的回调函数

4调用有简单参数的java方法

4.1、dwr.xml的配置
配置同1.1
<dwr>
<allow>
<create creator="new" javascript="testClass" >
<include method="testMethod3"/>
</create>
</allow>
</dwr>
4.2、javascript中调用
首先,引入javascript脚本
其次,编写调用java方法的javascript函数
Function callTestMethod3(){
//定义要传到java方法中的参数
var data;
//构造参数
data = “test String”;
testClass.testMethod3(data);
}

你可能感兴趣的:(DWR)