1、首先要下载dwr 3.0 地址 http://directwebremoting.org/dwr/download.html
2、在web.xml中加入dwr的servlet和相关配置
<!--dwr servlet-->
pollAndCometEnabled是指dwr 的reverse ajax是使用polling 和comet的方式,在这个例子中可以明显地从页面上看出来是用的polling+comet
附:关于reverse-ajax的实现有3种方式
polling
comet
piggyback 就是服务端的更新数据都在排队等待,等到下一次有请求过来,那么这些等待更新数据就伴随这次请求一起发送到brower
有关更详细的reverse-ajax技术介绍可以参考http://getahead.org/dwr/reverse-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>
<init-param>
<description>使用服务器推技术(反转AJAX)</description>
<param-name>activeReverseAjaxEnabled</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>
initApplicationScopeCreatorsAtStartup
</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>maxWaitAfterWrite</param-name>
<param-value>100</param-value>
</init-param>
<load-on-startup>4</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dwr-invoker</servlet-name>
<url-pattern>/dwr/*</url-pattern>
</servlet-mapping>
3、创建一个dwr.xml,用于配置你要制定的java代码映射类,以及允许使用的方法和converter
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE dwr PUBLIC
<dwr>
</dwr>
create是只一个java的js映射,其中include是可以在js使用的方法
convert 是指对应js到java,或者java到js的对象转换,其中include是可以转换的属性
4、写服务段的java代码
DWRHelper
package com.cloverworxs.uma.helper;
import java.util.Collection;
import java.util.LinkedList;
import org.directwebremoting.WebContext;
import org.directwebremoting.WebContextFactory;
import org.directwebremoting.proxy.dwr.Util;
public class DWRHelper {
}
Message
package com.cloverworxs.uma.helper;
import org.directwebremoting.Security;
public class Message {
}
5、到此为止可以写页面代码了,下面的代码html或者jsp都可以
<%@ page language="java" contentType="text/html; charset=UTF-8"
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
</head>
<h1>Java Chat</h1>
<body οnlοad="dwr.engine.setActiveReverseAjax(true);">
<script type='text/javascript' src='dwr/interface/DWRHelper.js'></script>
<script type='text/javascript' src='dwr/engine.js'></script>
<script type='text/javascript' src='dwr/util.js'></script>
<p>This is a very simple chat demo that uses reverse ajax to collect messages and server-side browser manipulation to update the pages with the results.</p>
<p>Your Name:<input id="username" type="text"/></p>
<p>Your Message: <input id="text" οnkeypress="dwr.util.onReturn(event, sendMessage)" />
</p>
<script type="text/javascript">
</script>
<hr />
<ul id="chatlog" style="list-style-type:none;">
</ul>
</body>
</html>
页面代码简单吧,只有方法调用,没有任何获得返回数据,和对回传数据处理的代码
注意:<body on
这个是要在使用reverse-ajax的页面必须的!
6.同时打开两个浏览器,都访问jsp页面,就可以互相聊天了。
现在可以启动应用体检一把reverse-ajax,希望你能和我有一样的惊奇感觉
当然,肯定有人会说这种功能用普通的ajax也可以实现啊,为什么要用reverse-ajax
这时候你就要考虑这种情况了,有用户A和用户B同时在发Message,A正在看message没有任何request动作,而B发了一条新message,这时要求这个信息要展现给A看,那么普通的ajax可以处理这种功能吗?这就是reverse-ajax的用途,可以从服务段向brower下推信息 .