前景提要
相关推荐: DWR ajax 实际应用讲解 DWR学习 使用DWR完成HelloWorld. DWR在T4项目中的应用(原创)(一) dwr学习笔记 Dwr+AutoComplete+pinyin4j 自动匹配(中文,拼音) 500G 史上最全的JAVA全套教学视频网盘分享 itween的抛物线线性移动
推荐群组: GT-Grid
更多相关推荐
DWR
一.原理
DWR 是一个引擎,可以把服务器端 Java 对象的方法公开给 JavaScript 代码。使用 DWR 可以有效地从应用程序代码中把 Ajax 的全部请求 - 响应循环消除掉。这意味着客户端代码再也不需要直接处理 XMLHttpRequest 对象或者服务器的响应。不再需要编写对象的序列化代码或者使用第三方工具才能把对象变成 XML 。甚至不再需要编写 servlet 代码把 Ajax 请求调整成对 Java 域对象的调用。虽然 DWR 不是 Java 平台上唯一可用的 Ajax-RPC 工具包,但是它是最成熟的,而且提供了许多有用的功能。 DWR 是作为 Web 应用程序中的 servlet 部署的。把它看作一个黑盒子,这个 servlet 有两个主要作用:首先,对于公开的每个类, DWR 动态地生成包含在 Web 页面中的 JavaScript 。生成的 JavaScript 包含存根函数,代表 Java 类上的对应方法并在幕后执行 XMLHttpRequest 。这些请求被发送给 DWR ,这时它的第二个作用就是把请求翻译成服务器端 Java 对象上的方法调用并把方法的返回值放在 servlet 响应中发送回客户端,编码成 JavaScript 。
二.使用 DWR 的开发步骤
1 )下载 dwr.jar 并将其加载到应用程序 lib 包下,并且将 JAR 包中的 engine.js,util.js 放在应用程序指定目录下,如 dwr, 注意这里要考虑目录路径问题
2 )配置应用程序部署描述 XML 文件
以下为通用默认配置
<!----> xml version = "1.0" encoding = "UTF-8" ?>
< web-app version = "2.4"
xmlns = "http://java.sun.com/xml/ns/j2ee"
xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation = "http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" >
< 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 >
web-app >
这一步骤的目标是将 DWRServlet 这个 servlet 配置到应用程序中
3) 配置 dwr.xml
<!----> xml version = "1.0" encoding = "UTF-8" ?>
<!----> DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 1.0//EN" "http://www.getahead.ltd.uk/dwr/dwr10.dtd" >
< dwr >
< allow >
< create creator = "new" javascript = "AIX" >
< param name = "class" value = "com.longcredit.KEye.app.business.AIXStatusBusiness" />
create >
allow >
dwr >
在这里要注意的是:
< create creator = "new" javascript = "AIX" > 这里的 AIX 是 DWR 自己生成的 JS 文件的名称,在网页中将被引用的JS文件名称
value = "com.longcredit.KEye.app.business.AIXStatusBusiness" />
这里的 value 值是一个类路径及其名称,该类为业务类,将被 DWR 映射成 JS 文件调用,它的调用名就是上面的 AIX
1) 编写 AIXStatusBusiness 类
public class AIXStatusBusiness {
public String remove(String id){
// 执行 command
// 返回状态
// 把返回的 XML 结果解析
return id;
}
}
2) 在页面中调用
首先要引入 JS
< script type = "text/javascript" src = 'dwr/interface/AIX.js' > script >
< script type = 'text/javascript' src = 'dwr/engine.js' > script >
< script type = 'text/javascript' src = 'dwr/util.js' > script >
目录结构如下图
dwr
--engine.js
--util.js
WEB-INF
---- web.xml
-----AIX.page
---AIX.html
我们要在 AIX 页面中调用,而 JS 文件存储在 dwr 目录下。
6 )在AIX.html页面中触发业务类定义的方法
AIX.remove(id,“回掉函数”);