一个可选的步骤是设置DWR为调试模式—象上面的例子那样—在servlet描述段中将debug参数设为true。当DWR在调试模式时,你可以从HTMl网页中看到所有的可访问的Java对象。包含了可用对象列表的网页会出现在/WEBAPP/dwr这个url上,它显示了对象的公共方法。所列方法可以从页面中调用,允许你,第一次,运行服务器上的对象的方法。下图显示了调试页的样子:
调试页
现在你必须让DWR知道通过XMLHttpRequest对象,什么对象将会接收请求。这个任务由叫做dwr.xml的配置文件来完成。在配置文件中,定义了DWR允许你从网页中调用的对象。从设计上讲,DWR允许访问所有公布类的公共方法,但在我们的例子中,我们只允许访问几个方法。下面是我们示例的配置文件:
<dwr>
<allow>
<convert converter="bean" match="dwr.sample.Apartment"/>
<create creator="new" javascript="ApartmentDAO" class="dwr.sample.ApartmentDAO">
<include method="findApartments"/>
<include method="countApartments"/>
</create>
</allow>
</dwr>
上面的文件实现了我们例子中的两个目标。首先,<convert>标记告诉DWR将dwr.sample.Apartment对象的类型转换为联合数组,因为,出于安全的原因,DWR默认的不会转换普通bean。第二,<create>标记让DWR暴露出dwr.sample.ApartmentDAO类给JavaScript调用;我们在页面中使用JavaScript文件被javascript属性定义。我们必须注意<include>标记,它指明了dwr.sample.ApartmentDAO类的哪些方法可用。
HTML/JSP代码
配置完成后,你就可以启动你的Web应用了,这时DWR会为从你的HTML或Java服务器端页面(JSP)上调用所需方法作好准备,并不需要你创建JavaScript文件。在search.jsp文件中, 我们必须增加由DWR提供的JavaScript接口,还有DWR引擎,加入以下三行到我们的代码中:
<script src='dwr/interface/ApartmentDAO.js'></script>
<script src='dwr/engine.js'></script>
<script src='dwr/util.js'></script>
我们注意到当用户改变搜索标准时,这是Ajax在示例程序中的首次应用;正如他所看到的,当标准改变时,可用的公寓数量被更新了。我创建了两个JavaScript函数:当某一个选择下拉框中的值变化时被调用。ApartmentDAO.countApartments()函数是最重要的部分。最有趣的是第一个参数, loadTotal()函数,它指明了当接收到服务端的返回时DWR将会调用的JavaScript方法。loadTotal于是被调用来在HTML页面的
中显示结果。下面是在这个交互场景中所使用到的JavaScript函数:
function updateTotal() {
$("resultTable").style.display = 'none';
var bedrooms = document.getElementById("bedrooms").value;
var bathrooms = document.getElementById("bathrooms").value;
var price = document.getElementById("price").value;
ApartmentDAO.countApartments(loadTotal, bedrooms, bathrooms, price);
}
function loadTotal(data) {
document.getElementById("totalRecords").innerHTML = data;
}
很明显,用户想看到符合他的搜索条件的公寓列表。那么,当用户对他的搜索标准感到满意,并且总数也是有效的话,他会按下显示结果的按纽,这将会调用updateResults() JavaScript方法:
function updateResults() {
DWRUtil.removeAllRows("apartmentsbody");
var bedrooms = document.getElementById("bedrooms").value;
var bathrooms = document.getElementById("bathrooms").value;
var price = document.getElementById("price").value;
ApartmentDAO.findApartments(fillTable, bedrooms, bathrooms, price);
$("resultTable").style.display = '';
}
function fillTable(apartment) {
DWRUtil.addRows("apartmentsbody", apartment, [ getId, getAddress, getBedrooms, getBathrooms, getPrice ]);
}
updateResults()方法清空了存放搜索返回结果的表域,从用户界面上获取所需参数,并且将这些参数传给DWR创建的ApartmentDAO对象。然后数据库查询将被执行,fillTable()将会被调用,它解析了DWR返回的对象(apartment),然后将其显示到页面中(apartmentsbody)。
安全因素
为了保持示例的简要,ApartmentDAO类尽可能的保持简单,但这样的一个类通常有一组设置方法来操作数据,如insert(), update()和delete()。DWR暴露了所有公共方法给所有的HTML页面调用。出于安全的原因,像这样暴露你的数据访问层是不明智的。开发者可以创建一个门面来集中所有JavaScript函数与底层业务组件之间的通信,这样就限制了过多暴露的功能。
结论
这篇文章仅仅让你在你的项目中使用由DWR支持的Ajax开了个头。DWR让你集中注意力在如何提高你的应用的交互模型上面,消除了编写和调试JavaScript代码的负担。使用Ajax最有趣的挑战是定义在哪里和如何提高可用性。DWR负责了操作Web页面与你的Java对象之间的通信,这样就帮助你完全集中注意力在如何让你的应用的用户界面更加友好,
分享到:
相关推荐
dwr 框架dwr 框架dwr 框架dwr 框架dwr 框架dwr 框架
Ajax的简述 传统web开发模式与ajax开发模式的不同 Ajax的开发与案例 Dwr框架的简介 Dwr框架的应用与案例 Dwr 框架与Struts,Spring框架的结合
DWR框架的实现DWR框架的实现DWR框架的实现DWR框架的实现DWR框架的实现
DWR(Direct Web Remoting)是一个开源的类库,可以帮助开发人员开发包含AJAX技术的网站.它可以允许在浏览器里的代码使用运行在WEB服务器上的JAVA函数,就像它就在浏览器里一样
SSH与DWR框架整合SSH与DWR框架整合SSH与DWR框架整合
dwr非常有名的ajax框架,内部有一个试例war包和必须的jar包
基于dwr框架的web应用的设计与使用,是介绍dwr入门的不错的文章。
dwr框架的源文件dwr框架的源文件dwr框架的源文件dwr框架的源文件
DWR 框架使用手册DWR 框架使用手册DWR 框架使用手册DWR 框架使用手册DWR 框架使用手册DWR 框架使用手册
框架结构dwr 框架结构dwr 框架结构dwr 框架结构dwr 框架结构dwr 框架结构dwr 框架结构dwr 框架结构dwr 框架结构dwr 框架结构dwr 框架结构dwr 框架结构dwr 框架结构dwr 框架结构dwr
是自己学习期间DWR框架的简单的一些实例和操作。里面有三层写的异步刷新分页 还有DWR操作的14个小实例,以及提高能力的DWR的API和API的技术文档,贡献大家,希望大家能够用的上,也欢迎学习交流,里面有本人的QQ。
(参考:http://www.cnblogs.com/cyjch/archive/2012/02/16/2353758.html) DWR框架简单Demo,主要是用户注册的例子。 感谢原博主的分享!(附上我测试成功的Demo)
包含Ajax高级程序设计和DWR框架的资料
里面存放关于dwr框架的库和帮助文档,还有dwr官方的源码,以及关于控件的资料,对dwr配置文件有详细的说明
dwr框架需要使用的四个包,包括dwr.jar,jdom.jar,serializer.jar,xalan.jar
java+dwr框架实现聊天室,
内容丰富 dwr框架详细介绍 讲解浅显易懂 和大家分享一下
DWR学习资料 里面有两个PPT. 不错的内容.有助于DWR框架的朋友
基于java和DWR框架实现异步加载的简单的前后台交互demo 基于java和DWR框架实现异步加载的简单的前后台交互demo 基于java和DWR框架实现异步加载的简单的前后台交互demo
DWR框架资源。