基于Ajax技术的DWR应用

    DWR(Direct Web Remoting):是一个用于改善web页面与java类交互的远程服务Ajax开源框架,可以帮助开发人员开发包含AJAX技术的网站。简单的理解就是应用DWR可以让Ajax开发变的容易,客户端可以直接使用javascript调用java方法并得到返回值。

    DWR基于Ajax开发,使得B/S程序之间有更好的交互性,Ajax的技术原理同样使得异步刷新减少了对服务器和网络的压力。下面我们通过简单的例子帮助理解DWR是如何应用的。

一、下载DWR的安装包,拷贝dwr.jar包到lib目录下。

二、在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>
     <!-- 新加corssDomainSessionSecurity参数-->
	<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>

三、在WEB-INF下面拷贝一个dwr.xml配置文件:

<dwr>
    <allow>
        <create creator="new" javascript="T1">
          <param name="class" value="com.bjsxt.dwrtest.Test1"/>
        </create>
    </allow>
</dwr>

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

四、编写java的源代码:

package com.bjsxt.dwrtest;

public class Test1 {
	public String hello(){
		return "世界,你好!";
	}
}

五、编写jsp页面的代码:

   首先需要引入dwr的脚本文件:

<script type="text/javascript" src="dwr/engine.js"></script>
<script type="text/javascript" src="dwr/util.js"></script>

这两个脚本文件是dwr自带的,

<script type="text/javascript"src="dwr/interface/T1.js"></script>这个是我们手动编写然后导入的脚本文件,其中T1就是我们在dwr中定义的javascript的名字。注意这两个名字一定要一致,否则会找不到我们的脚本文件。

   然后编写javascript的脚本代码:

<script type="text/javascript">
		function test1(){
			T1.hello(
				helloreturn		
			);
		}
		function helloreturn(value){
			alert(value);
		}
</script>

   其中其中helloreturn就是一个回调函数,实际就是将返回值付给了这个函数。

然后响应javascript函数即可:<input type="button" value="测试" οnclick="test1()">。这样我们就简单的完成了一个DWR的应用,当然,这种技术的强大还不只这一点,我们不仅可以采用多种定义处理函数的方法处理DWR的返回值,还可以传递参数,处理返回的数组、List集合和map类型,而且还可以通过el表达式获取页面元素的值。

例如页面传递参数:

name: <input type="text" name="name"> <br>
permission: <input type="text" name="permission"> <br>
<input type="button" value="测试是否有权限" οnclick="test1()"><br>
<input type="checkbox" name="hp">拥有权限

javascript通过el表达式获取页面元素的值:

<script type="text/javascript">
	function test1(){
		T7.hasPermission(
			$("name").value,	
			$("permission").value,
			function(datas){
				$("hp").checked=datas;
			}
		
		);
	}
</script>

    DWR基于Ajax技术,对于Ajax中最核心的异步处理也是支持的,DWR默认情况下以异步的方式向后台发出请求,可以通过dwr.engine.setAsync(false)设置为同步方式。











  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值