加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

DWR技术简介及应用

发布时间:2020-12-15 21:01:38 所属栏目:百科 来源:网络整理
导读:dwr(Direct Web Remoting)是一个WEB远程调用框架.利用DWR可以在客户端利用javascript直接调用服务端的java方法,并返回值给javascript. 原理:DWR通过反射,将java翻译成javascript,然后利用回调机制,轻松实现了javascript调用java代码。 配置及使用步骤:

dwr(Direct Web Remoting)是一个WEB远程调用框架.利用DWR可以在客户端利用javascript直接调用服务端的java方法,并返回值给javascript.
原理:DWR通过反射,将java翻译成javascript,然后利用回调机制,轻松实现了javascript调用java代码。
配置及使用步骤:
1. 在项目中引入dwr.jar,在web.xml文件中配置DwrServlet
2. 创建java类,编写业务代码.该代码和dwr无关,就是普通的java类
3. 配置dwr.xml文件 通过配置告诉DWR哪些类的哪些方法需要暴露给前台使用,当DWR启动时根据dwr.xml这个文件把java类中的方法转成js中可用的类中的方法,使前台可以使用。
4. 在web页面中编写javascript方法,调用业务逻辑方法
5. 执行过程中,程序将执行结果利用回调函数返回。在回调函数中,得到执行结果后,可以继续编写业务逻辑的相关javascript代码。


代码实例:

1. 在web.xml中配置DwrServlet

<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>
  	<init-param>       
               <param-name>crossDomainSessionSecurity</param-name>       
               <param-value>false</param-value>       
       </init-param> 
  </servlet>
  <servlet-mapping>
  	<servlet-name>dwr-invoker</servlet-name>
  	<url-pattern>/dwr/*</url-pattern>
  </servlet-mapping>

2. 创建java类,编写业务逻辑

public class DWRTest {
	public String hello(){
		return "Hello World";
	}
}

3. 配置dwr.xml

dwr.xml放在web-inf目录下。

第一种写法是调用spring bean,第二种写法是调用普通的java类。

<allow>标签中包括可以暴露给javascript访问的东西。
<create>标签中指定javascript中可以访问的java类,并定义DWR应当如何获得要进行远程的类的实例。creator="new"属性指定java类实例的生成方式,new意味着DWR应当调用类的默认构造函数来获得实例,其他的还有spring方式,通过与IOC容器Spring进行集成来获得实例等等。javascript=" testClass "属性指定javascript代码访问对象时使用的名称。
<param>标签指定要公开给javascript的java类名。
<include>标签指定要公开给javascript的方法。不指定的话就公开所有方法。
<exclude>标签指定要防止被访问的方法。

<dwr>
  <allow>
  <!-- javascript="在javascript中要用的类名" value="spring配置文件中DWRTest类对应的id"-->
   <!--  <create creator="spring" javascript="dwrTest">
      <param name="beanName" value="dwrTest"/>
    </create> -->

   <!-- javascript="在javascript中要用的类名" value="被调用的java类的完整路径"-->
     <create creator="new" javascript="DWRTest">
      <param name="class" value="com.tgb.DWRTest"/>
    </create>
  </allow>
</dwr>

4. 在页面中通过javascript调用业务逻辑方法

其中DWRTest.js是dwr根据配置文件自动生成的,engine.js和util.js是dwr自带的脚本文件。

<script type="text/javascript" src="dwr/engine.js"></script>
<script type="text/javascript" src="dwr/util.js"></script>
<script type="text/javascript" src="dwr/interface/DWRTest.js"></script>
<script type="text/javascript">
//java方法的javascript函数
functiontest1(){
DWRTest.hello( helloreturn  );
}
//接收返回值的回调函数
function  helloreturn(value){
//value接收方法的返回值,可以在这个回调函数里对返回值进行处理-->
alert(value);
}
//或者采用第二种写法,将回调函数放到javascript函数内部
//function test1(){
//		DWRTest.hello(
//			function(data){
//				alert(data);
//			}
//		);
//	} 
</script>

<body>
	<input type="button" value="hello" onclick="test1()">
</body>

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读