基于Ajax技术的DWR应用

前端之家收集整理的这篇文章主要介绍了基于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="测试" onclick="test1()">。这样我们就简单的完成了一个DWR的应用,当然,这种技术的强大还不只这一点,我们不仅可以采用多种定义处理函数方法处理DWR的返回值,还可以传递参数,处理返回的数组、List集合和map类型,而且还可以通过el表达式获取页面元素的值。

例如页面传递参数:

name: <input type="text" name="name"> <br>
permission: <input type="text" name="permission"> <br>
<input type="button" value="测试是否有权限" onclick="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)设置为同步方式。

原文链接:https://www.f2er.com/ajax/163766.html

猜你在找的Ajax相关文章