dwr被称之为“反向ajax”,其实是一种假象。特别在它的3种方式中的“polling”---轮询这种方式中表现最明显,就是客户端不断请求服务端询问服务端是否有信息要输出到客户端。
一、dwr的3种方式:
1、piggyback(dwr默认的配置):如果后台有什么信息要推送到浏览器,就需要等下次浏览器发起ajax请求时,将该信息附加在请求的信息之后推送到浏览器。(当启用反向ajax是不会导致服务器超载的)
web.xml配置:
<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>
<!-- DWR默认采用piggyback方式 -->
<init-param>
<param-name>pollAndCometEnabled</param-name>
<param-value>true</param-value>
</init-param>
<!-- 毫秒数。页面默认的请求间隔时间是5秒 -->
<!--
<init-param>
<param-name>disconnectedTime</param-name>
<param-value>60000</param-value>
</init-param>
-->
<init-param>
<param-name>crossDomainSessionSecurity</param-name>
<param-value>false</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dwr-invoker</servlet-name>
<url-pattern>/dwr/*</url-pattern>
</servlet-mapping>
<!-- dwr 配置结束-->
2.polling(轮询):由浏览器定时向服务端发送ajax请求,询问后台是否有什么内容需要推送,有的话就会由服务端返回推送内容。这种方式和我们直接在页面通过定时器发送ajax请求,然后查询后台是否有变化内容的实现是类似的。只不过用了dwr之后这部分工作由框架帮我们完成了。
在piggybackl基础上再加上:
<init-param>
<param-name>activeReverseAjaxEnabled</param-name>
<param-value>true</param-value>
</init-param>
3、comet(长连接):当服务端和客户端建立连接之后,将页面内容输出到浏览器后,对应的连接并不关闭,而是暂时的挂起,当服务端有新内容需要传到浏览器时,该连接激活传输数据。 但是由于服务端所能提供的链接数是一定的,当很多人访问浏览器的该页面时,连接没有关闭会造成新的连接请求不能接入,从而影响服务质量。
在polling配置的基础上,再加上:
<init-param>
<param-name>org.directwebremoting.extend.ServerLoadMonitor</param-name>
<param-value>org.directwebremoting.impl.PollingServerLoadMonitor</param-value>
</init-param>
二、dwr.xml文件的配置:
dwr我一般用在spring项目中,dwr.xml文件配置采取spring方式:
<?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="spring" javascript="messagePush">
<param name="beanName" value= "messagePush"><!--交给spring管理后才可以这样写-->
<include method="sendMessage,updateUserList"/>
</param>
</create>
<convert match="com.luo.model.User" converter="bean"></convert>
</allow>
</dwr>
三、dwr在服务端的使用
dwr的核心就是WebContext,在服务端我就是为了得到一个客户端的util它的获取步骤是:
WebContext context = WebContextFactory.get();
ServletContext application = ServerContextFactory.get(context.getServletContext);
Collection<ScriptSessions> scriptSessions = application.getScriptSessionByPage(context.getCurrentPage());
Util util = new Util(scriptSessions );
util可以使用util.setValue(id,value);来给客户端的div等赋值
util.removeAllOptions(ulId);
util.addOptions(ulId,userList,userId,username);//userList是一个user的list集合,uuserId和username是user的两个属性,将作为option中的value和text被添加。
还有种方法是在客户端定一个js的function demo,然后在服务端调用它。
ScriptBuffer buffer = new ScriptBuffer();
buffer.appendScript("demo(").appendData("你好").appendScript(");");
util.addScript(buffer);
或者:
for(ScriptSession session:pages){
session.addScript(buffer);
}
分享到:
相关推荐
DWR (Direct Web Remoting) 是一种开源JavaScript库,它允许Web应用程序在客户端与服务器之间进行实时、异步通信,无需刷新整个页面。Ajax(Asynchronous JavaScript and XML)技术是DWR实现其功能的基础,通过Ajax...
DWR (Direct Web Remoting...总结,DWR提供了一种强大而灵活的方式,使得JavaScript可以直接调用服务器端的Java方法,实现复杂的数据交互。通过理解上述调用和传参方式,开发者能够更好地利用DWR构建富客户端应用程序。
以下是对DWR简单设计的总结: 1. **DWR的基本概念**: DWR的核心功能是在客户端JavaScript和服务器端Java之间建立直接的通信通道,通过AJAX(Asynchronous JavaScript and XML)技术实现异步数据交换。这允许用户...
总结来说,DWR是一种强大的工具,能够帮助开发者构建出更加高效、响应式的Web应用。通过学习和掌握DWR,你可以更好地融合前后端开发,实现更为流畅的用户交互。在自学过程中,理解DWR的工作原理、熟练运用其主要组件...
`总结DWR的步骤.txt`可能是对实施DWR步骤的简洁概述,方便快速参考。`Ajax主要代码.txt`可能包含了一些关键的Ajax代码示例。`ajax登录`可能是一个实际的DWR应用示例,展示如何实现无刷新的登录功能。`dwrdemo`可能是...
在DWR(Direct Web Remoting)中,处理集合是一项关键任务,因为它允许JavaScript与服务器端的Java代码进行交互,传递和接收数据集合。DWR是一个开源框架,它使得Web应用程序可以利用Ajax技术实现异步通信,即在不...
总结起来,DWR是一个强大的工具,通过提供JavaScript与Java之间的无缝交互,极大地简化了Ajax应用的开发。无论是DWR 2.0还是3.0,它们都为Java开发者提供了高效、灵活的解决方案,帮助构建更加动态、响应式的Web界面...
总结起来,DWR的`dwr.xml`配置文件是实现JavaScript与Java之间交互的核心,它详细定义了哪些Java对象可以被JavaScript访问,以及如何进行数据转换。理解和配置好`dwr.xml`文件对于充分利用DWR的功能至关重要,同时也...
dwr使用入门总结,适合想入门的dwr学者。
5. **本节总结**:概括上述JavaScript高级特性的应用技巧,以及它们如何帮助开发者更高效地使用DWR。 通过以上内容,我们可以看到DWR不仅是一个强大的框架,还提供了一系列实用的工具和资源来帮助开发者构建高性能...
dwr 知识点和实例代码的总结--DWR应当如何获得要进行远程的类的实例
#### 五、总结 DWR作为一种高效的Web开发工具,大大简化了前后端之间的交互过程。通过将服务器端逻辑封装成JavaScript库的形式,不仅提高了开发效率,还增强了应用程序的交互性。此外,DWR还支持多种数据格式(如...
总结起来,DWR是一个强大的工具,它简化了Ajax开发,提供了丰富的功能和良好的安全性,使得开发者能够更加专注于业务逻辑的实现,而不是技术细节。如果你正在寻找一种方式来增强你的Web应用的交互性和响应速度,DWR...
Direct Web Remoting ...总结,DWR作为一个强大的工具,极大地简化了Web应用的开发,尤其是对于需要频繁交互的实时应用场景。然而,正确配置和使用DWR,以及处理好跨域安全问题,是每个开发者必须面对和解决的挑战。
**Ajax学习——DWR的参考书和实用案例学习总结** DWR(Direct Web Remoting)是一种优秀的开源框架,专门用于简化Web应用程序中的Ajax(Asynchronous JavaScript and XML)开发。Ajax技术允许网页在不刷新整个页面...
### dwr学习笔记和总结 #### 一、DWR简介 DWR (Direct Web Remoting) 是一个简化Ajax开发的框架,它使得JavaScript能够直接调用服务器端的Java方法成为可能,无需编写复杂的Ajax代码。这极大地提高了开发效率,并...
总结来说,DWR 3.0入门涉及以下步骤: 1. 创建Web工程,导入DWR库。 2. 编写JavaBean。 3. 配置dwr.xml,指定暴露给JavaScript的Java类和方法。 4. 在web.xml中配置DWRControlServlet。 5. 引入必要的JavaScript文件...
**总结** DWR作为Java世界中的一个强大工具,极大地简化了AJAX开发,使得JavaScript能够轻松地与服务器进行通信。通过理解其核心功能、配置步骤以及使用流程,开发者可以快速地在项目中引入DWR,构建高效、动态的...
7. **总结** DWR为开发人员提供了一种强大的工具,使得Web应用能够更高效地与服务器进行数据交互,特别是在处理与Oracle这样的关系型数据库的操作时。通过深入理解和实践DWR,你可以构建出更富有交互性和响应性的...