使用DWR反转AJAX的失败经验和教训 <script src="http://blog.csdn.net/count.aspx?ID=1864649&amp;Type=Rank"></script>
过去一周,我试图使用DWR的反转AJAX功能,开发一个基于Web的页面即时通讯系统,但是失败了。
出现的技术障碍是,除了当前得到的ScriptSession外,想尽办法得到的其他ScriptSession,都像是被阉割过的,根本不能够从服务器端向客户端发送消息和JavaScript代码。
可能是因为,DWR的反转AJAX功能是使用定时轮询实现的,如果客户端浏览器不发起轮询,服务器端再怎么做都是没用的!
这样,点对点通过Html页面通讯,就无法实现了。只能够实现DWR提供的例子那样的Web聊天室的应用。
下面,总结一下发现的浏览器和DWR反转AJAX功能的Bug和一些经验。
一、IE是能力最差的浏览器,Firefox不错
其他浏览器,还没有试过。
1,反转AJAX的功能,在Firefox上能够得到正确的应用,但是,在IE上,就无法实现即时的页面接收。
2,IE是最不符合规范的浏览器。DOM的实现也不够规范,使用标准的DOM方法,在Firefox中正确显示,但在IE7中却毫无作用。当然,这并不是大问题,还是有一些办法可以克服IE的缺点的。
二、DWR的反转AJAX功能
1,除了当前得到的ScriptSession外,想尽办法得到的其他ScriptSession,都像是被阉割过的,根本不能够从服务器端向客户端发送消息和JavaScript代码。
2,DWR框架的DwrUtil类
DwrUtil类是一个服务器端的代理类,允许Java程序员调用客户端的Java代码。
这个类实际上只是一个助手类,它实际上是使用ScriptSession的Script字段,向客户端发送特定的JavaScript代码而已。这个类的存在,仅仅是方便了用户使用一些常见的功能而已。
3,DwrUtil类和ScriptSession类,缺少区分向哪一个浏览器的哪一个页面发送JavaScript代码的能力。
这造成了严重的问题。
1)缺少区分浏览器的能力,就不能够实现浏览器用户的点对点之间的通讯。
2)即使我得到了ScriptSession,它们也失去了向客户端传输JS代码的能力。
3)不能区分页面,这样,就会发生服务器传输的信息发祥错误的页面的情况。如果2个页面没有相同的页面元素,会报缺少页面元素的错误。如果2个页面的元素一样,那么就会发生显示错误的信息的情况。
总之,现在DWR的反转AJAX功能还有很大的不足!
三、DWR
DWR提供了使用JS远程调用Java类的功能。这是一种RPC远程调用的机制。类似于RMI等远程方法调用。每一个发布的Java类都会自动生成一个对应的JavaScript类。
这个javaScript类,是远程Java类的本地存根,是一个代理类。它们简单的通过XMLHttpRequest对象,调用服务器端的Java类的对应方法,然后把结果返回。
DWR对于广大的Java程序员来说是一大福音。不必学习和编写复杂的JavaSript代码和AJAX代码,只需要编写Java类和方法,就能够完成大部分的AJAX应用。
另一方面,DWR这样的远程RPC调用,存在安全问题,这和其他远程调用机制是一样的,必须要有安全机制的保证,才能够真正运用。DWR已经提供了安全机制。不过我还没有细看J
DWR的远程调用机制,需要采用与其他远程调用机制一样的编程模式。那就是,应当远程发布粗粒度的Java类和方法,而不应该公布细粒度的对象,否则将会造成严重的性能问题。
如,应该公布业务模块的服务层的类,或者是表现层的业务委派层的业务委派类这样粗粒度,面向具体应用的类。
绝不能够公布数据访问层的类。那些类是细粒度的。而且,使用数据访问类的方法,能够实现对数据库的CRUD操作,将会造成严重的安全漏洞。
要记住,DWR的客户端是浏览器。任何人都能够在自己的机器上编写JS代码,然后远程访问我们发布的Java类。不进行安全控制,是绝对危险的!
我对DWR框架,也只是略知一二,看来有必要对DWR框架进行深入和系统的学习和研究。研究和发展DWR的反转AJAX功能。必要的时候,自己创造这样一种反转AJAX的功能。如,使用定时器,定时使用AJAX异步查询服务器的方式,我想,DWR可能也是这样实现反转AJAX功能的。
相关推荐
标题中的“dwr反转AJAX聊天源码”是指使用DWR库构建的一个聊天应用程序,其核心功能是实现实时的消息传递。这个源码示例可能包括了服务器端的Java代码,用于处理聊天消息的接收和发送,以及客户端的HTML、JavaScript...
5. **集成DWR和Ajax**:理解何时使用DWR,何时使用纯Ajax,以及如何将两者结合使用,以优化Web应用性能。 6. **实战应用**:通过阅读提供的文档和示例,实践创建简单的DWR和Ajax应用,如实时搜索、无刷新表格更新等...
**Ajax + DWR**结合使用时,DWR作为一个中间层,处理JavaScript和Java之间的通信。开发者可以定义Java类和方法,DWR会自动生成对应的JavaScript接口,使得在浏览器中可以直接调用这些服务端方法。这样,我们可以在不...
【DWR(Direct Web Remoting)与Ajax技术详解】 DWR(Direct Web Remoting)是一种在Web应用程序中...理解并掌握DWR和Ajax的结合使用,能够极大地提升你的Web开发能力,让你能构建出更加高效、用户体验优良的应用。
使用DWR实现Reverse Ajax,首先需要在服务器端配置DWR,包括创建DWR的配置文件dwr.xml,设置允许访问的Java方法。然后在客户端,使用JavaScript的DWR API创建连接并注册回调函数,以接收服务器推送的数据。在服务器...
**DWR(Direct Web Remoting)**是一种Java库,它允许在浏览器和服务器之间进行实时、双向通信,从而实现AJAX(Asynchronous JavaScript and XML)应用程序。DWR简化了JavaScript与Java后端交互的过程,无需手动编写...
DWR(Direct Web Remoting)是一种JavaScript库,它允许Web应用程序实现服务器端与客户端之间的实时、双向通信,无需使用复杂的Ajax技术。DWR使得开发者能够像调用本地JavaScript函数一样轻松地调用服务器上的Java...
本文将深入探讨DWR3框架如何实现对Ajax的反转,以及通过一个具体的实例来展示其工作原理和应用。 DWR3是DWR框架的第三个主要版本,它提供了一种高效、安全的方式,使JavaScript可以直接调用服务器端的Java方法。...
总之,这个基于DWR的聊天系统实例展示了DWR在创建实时Web应用中的强大功能,包括反转Ajax、Push技术、数据流处理、加密和持久化等。通过学习这个项目,开发者可以进一步提升自己在构建高效、安全的Ajax应用方面的...
Direct Web Remoting (DWR) 是一个开源Java库,它允许在浏览器和服务器之间进行安全、高效的异步通信,即所谓的“反向AJAX”或“Comet”技术。DWR使得JavaScript能够调用服务器端的Java方法,就像它们是本地函数一样...
在DWR中,AJAX的实现变得更加简单,因为DWR提供了一套完整的框架,使得开发者可以方便地在客户端和服务器之间传递数据。 **DWR验证**通常用于实现用户输入的实时检查,例如在用户输入时检查邮箱地址的有效性、...
DWR提供了三种反向Ajax技术,分别是轮询、Comet和PiggyBack。 1. **轮询(Polling)**: 轮询是最基础的反向Ajax技术。客户端每隔一定时间(例如几秒或几十秒)就向服务器发送一个请求,询问是否有新数据。如果有...
**使用DWR开发AJAX For J2EE** ...总之,DWR为J2EE开发者提供了一种强大且易于使用的工具,通过AJAX技术改进了Web应用的性能和用户体验。通过学习和掌握DWR,开发者能够构建更高效、更互动的Web应用。
这个“一个使用DWR的Ajax完整实例”是帮助开发者理解并实践如何在实际项目中应用DWR与Ajax技术的示例。 在Web开发中,Ajax(Asynchronous JavaScript and XML)是一种创建动态网页的技术,它通过在后台与服务器进行...
在标题中提到的"DWRtree DWR实现AJAX的一个树形",指的是使用DWR来创建一个基于AJAX的动态树形结构。这种树形结构通常用于网站导航、文件目录展示或者层级数据的交互操作。通过AJAX,用户可以在不刷新整个页面的情况...
"操作步骤.txt"可能包含使用DWR和AJAX实现无刷新技术的详细教程或步骤。"lib"目录可能包含了DWR库和其他必要的依赖文件。"MyDwr"可能是一个示例项目,展示了如何在实际应用中使用DWR进行无刷新开发。 综上所述,DWR...
没事的时候自己写的一个聊天室,用了SSH框架整合DWR推反转AJAX技术,可能有一些不合理的地方,但实现了聊天室的基本功能,希望给大家一些帮助。需要大家根据spring配置文件,配置下Mysql数据库,建一张用户表就可以...
DWR (Direct Web Remoting) 是一个开源Java库,它允许Web应用程序在客户端JavaScript和服务器端Java之间进行异步通信,实现了类似Ajax的功能。在这个小实例中,我们将探讨如何使用DWR来实现实时的文件上传功能,这...
提供的`dwr_doc`文件夹很可能是DWR的官方文档,包含详细的使用指南和技术参考,可以帮助开发者深入理解和使用DWR。`dwr_lib`可能包含DWR的库文件,供项目集成使用。 综上所述,DWR是一个强大的AJAX框架,通过其...
DWR是一种强大且易于使用的Java Ajax框架,它极大地简化了前端与后端之间的交互过程,使得开发者能够更加专注于业务逻辑的实现而非底层的技术细节。无论是对于新手还是经验丰富的开发者来说,DWR都是构建高质量、高...