DWR学习(一)使用步骤
来源:互联网 发布:js eval 调用函数 编辑:程序博客网 时间:2024/05/21 04:41
DWR(direct web remote)直译就是“直接web远程调用”, 是一个基于服务器端的ajax框架。通过该框架,我们可以使用js来直接调用java方法。[c1]
以前面试时,有人要我向他解释什么是dwr,那时候对ajax还没有深入骨子那种理解,夸夸说了一通,其实dwr也是ajax技术的一种。不过现在在网上看到别人帖子里有说,“dwr非常好,比ajax好用都了”,此时再回头想想自己,会心一笑。
其他ajax框架: Prototype.js是一个基于浏览器其端的ajax框架,其实prototype.js只是一个封装好的js文件,只需要引入prototype.js即可使用。现在还一个用的比较的的ajax框架就是jQuery,jQuery也是一种基于浏览器的ajax框架。现在我们项目中用的比较多的是ExtJs,它是一种用于创建前端用户界面,与后台技术无关的ajax框架。
使用步骤
1. 引入jar包到WEB-INF/lib
2. web.xml中写入:
<servlet> <servlet-name>dwr-invoker</servlet-name> <servlet-class>uk.ltd.getahead.dwr.DWRServlet</servlet-class> <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>
3. 建立java类(普通java类即可,不是servlet)TestClass
public class TestClass { public void testMethod1(){ System.out.println("hello dwr!"); } public String testMethod2(String name, int a){ return "hello " + name + a; }}
4. 在/WEB-INF[p2] /dwr.xml[p3] 中配置java类:
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 2.0//EN" "http://www.getahead.ltd.uk/dwr/dwr20.dtd"><dwr> <allow> <create creator="new" javascript="testClass" > <param name="class" value= "com.dwr.TestClass" /> </create>[p4] </allow></dwr>
注解: 一个<create/>标签对应一个java类的配置,可以是多个。
5. 在dwr.jsp中使用,需要首先引入:(需要保证dwr这个目录位于web应用的根目录)
<script src='dwr/interface/testClass.js'></script> <script src='dwr/engine.js'></script> <script src='dwr/util.js'></script>[p5]
注:engine.js和util.js不需要引入,因为在dwr.jar包中已经包含了,dwr默认在WebRoot的根目录下,所以可以通过web.xml中配置的映射名找到,如果你的页面jsp在webRoot的子目录中可以通过../dwr/xxx.js来找到。
6. 在javascript方法中调用后台java类方法:
function test() { testClass.testMethod1(); }用dwr调用有参数的java方法,有返回值: function test(){ testClass.javaMethod2("bbb","5",parseInfo[p6] ); //若java方法需要传参,处理响应数据的函数名放到参数列表后面。 //dwr会进行自动类型转换,这些类型都是基本数据类型} function parseInfo (data){ document.getElementById("div1").innerHTML=data; }
DWR调用的简单顺序:
1. js调用相应的方法发送请求。/dwr/td.test1
2. DWRServlet处理相关请求。根据dwr.xml配置内容,调用相应的java类的方法。
3. DWRServlet将处理完的数据返回给客户端。
其他知识点:
1.dwr中的得到request对象:
HttpServletRequest req = WebContextFactory.[c7] get().getHttpServletRequest();
2. javascript顺序执行的问题:
function test8(data){
// DWREngine.setAsync(false); //将ajax改成同步方式,可以实现顺序执行。
testClass.testMethod7({
function(a){
alert(a);
}
});
alert("ttt");
}
4. javabean转化成js中的对象:
public Address test6(){ return new Address("中国","北京","海淀区");} <convert match="com.pk.beans.Address" converter="bean"> <param name="include" value="country,province" ></param>[c8] </convert> td.test6(function(data){ alert(data.country); });
5. 集合中的对象为javabean时,如何使用:
public List test7(){ List list = new ArrayList(); for(int i=0;i<5;i++){ list.add(new Address("中国","北京"+i,"海淀区")); } return list; } public List test8(){ List list = new ArrayList(); for(int i=0;i<5;i++){ list.add(new User("a",3,new Address("中国","北京"+i,"海淀区"))); } return list; } <convert match="com.pk.beans.Address" converter="bean"> <param name="include" value="country,province" ></param> </convert> <convert match="com.pk.beans.User" converter="bean"> </convert> <signatures> <![CDATA[ import java.util.*; import com.pk. beans.*; import com.pk. ajax.TestDwr; TestDwr.test7(List<Address>); TestDwr.test8(List<User>); ]]></signatures>[c9] td.test7(function(data){ alert(data.length); alert(data[3].province); //dwr中:java的List,Set会自动转化为js中的数组 }); td.test8(function(data){ alert(data[0].addr.country); alert(data[0].name); });
[c1]本质上仍然是请求响应模式
[p2]位置
[p3]名字是固定的,必须是:dwr.xml
[p4]配置一个类,增加一个create元素就可以了。
[p5]这两个js必须加上。
[p6]通常所调用的java方法返回的是字符串,所以要用parseInfo来获取响应数据
[c7]Dwr1.0引入:uk开头的包。
Dwr2.0引入:org开头的包。
[c8]不写的话,所有属性都转化。
写的话,只转化value指定的属性。
[c9]该元素置于<allow>外,<dwr>中。
转载地址:http://www.webspherechina.net/home/space.php?uid=28038&do=blog&id=51948
0 0
- DWR学习(一)使用步骤
- DWR学习(一)
- dwr学习(一)
- dwr学习(一)
- DWR使用步骤
- DWR使用步骤
- DWR源码学习(一)
- DWR 学习笔记(一)
- dwr技术使用的步骤
- DWR学习(一)
- DWR学习(一)
- DWR学习(一)
- DWR学习笔记一
- DWR学习笔记(一)
- DWR学习笔记(一)
- DWR学习--DWRUtil 使用
- Ajax中DWR框架使用简单步骤
- 【转】 dwr使用步骤 转载自 lijunwyf
- Android异步处理系列文章索引
- 多文件操作
- 利用vs2012对统计词频进行性能分析
- 在eclipse里面加sikuli project
- 编辑器的图片上传
- DWR学习(一)使用步骤
- 网站设计时要注意的问题
- FireEye:雪人行动针对美国海外战争退伍军人网站
- 链表(线性表)
- 高内聚,低耦合的程序设计
- 统一设计,iOS6也玩扁平化
- win7 英文版64位操作系统下,破解lr不成功 ——解决办法
- 原标题:机长扎哈里 道行有点深
- 循环与判断语句