- 浏览: 31350 次
- 性别:
- 来自: 上海
最近访客 更多访客>>
最新评论
-
punan7005:
这不就是我们公司吗
转(坚决抛弃powerdesigner建模) -
jkluooop:
我尝试过啊,很郁闷,在第一次访问的时候IE跟FFX下老弹出登录 ...
JCIFS相关 -
every:
你好
请教2008 ad 如何配置ssl
AD、CA、SSL,绑定keystore
在网上找了一个老外写的dwr reverse-ajax的例子,自己把coding顺序调整了一下希望可以对学习dwr reverse-ajax的朋友有所帮助
1、首先要下载dwr 2.0 地址 http://getahead.org/dwr/download
2、在web.xml中加入dwr的servlet和相关配置
<servlet>
<servlet-name>dwr-invoker</servlet-name>
<display-name>DWR Servlet</display-name>
<servlet-class>uk.ltd.getahead.dwr.DWRServlet</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>pollAndCometEnabled</param-name>
<param-value>true</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>
pollAndCometEnabled是指dwr 的reverse ajax是使用polling 和comet的方式,在这个例子中可以明显地从页面上看出来是用的polling+comet
附:关于reverse-ajax的实现有3种方式
polling 就是隔一段时间向服务器发送一request来检查服务端是否有数据更新
comet 就是一个长http请求,在请求期间服务端可以向客户端push数据,但是这种做法要求server和brower长期建立一个通信通道,而且效率很低
piggyback 就是服务端的更新数据都在排队等待,等到下一次有请求过来,那么这些等待更新数据就伴随这次请求一起发送到brower
有关更详细的reverse-ajax技术介绍可以参考http://getahead.org/dwr/reverse-ajax
3、创建一个dwr.xml,用于配置你要制定的java代码映射类,以及允许使用的方法和converter
<!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="DWRHelper">
<param name="class" value="com.cloverworxs.uma.helper.DWRHelper" />
<include method="addMessage" />
</create>
<convert converter="bean" match="com.cloverworxs.uma.helper.Message">
<param name="include" value="id,text" />
</convert>
</allow>
</dwr>
create是只一个java的js映射,其中include是可以在js使用的方法
convert 是指对应js到java,或者java到js的对象转换,其中include是可以转换的属性
4、写服务段的java代码
DWRHelper
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import org.directwebremoting.ScriptBuffer;
import org.directwebremoting.WebContext;
import org.directwebremoting.WebContextFactory;
import org.directwebremoting.proxy.dwr.Util;
public class DWRHelper {
public void addMessage(String text) {
LinkedList messages = new LinkedList();
if (text != null && text.trim().length() > 0) {
messages.addFirst(new Message(text));
while (messages.size() > 10) {
messages.removeLast();
}
}
// Reverse Ajax code to be added here shortly
WebContext wctx = WebContextFactory.get();
String currentPage = wctx.getCurrentPage();
// Clear the input box in the browser that kicked off this page only
Util utilThis = new Util(wctx.getScriptSession());
utilThis.setValue("text", "");
// For all the browsers on the current page:
Collection sessions = wctx.getScriptSessionsByPage(currentPage);
Util utilAll = new Util(sessions);
// Clear the list and add in the new set of messages
utilAll.removeAllOptions("chatlog");
utilAll.addOptions("chatlog", messages, "text");
}
}
Message
import org.directwebremoting.Security;
public class Message {
public Message(String newtext) {
text = newtext;
if (text.length() > 256) {
text = text.substring(0, 256);
}
text = Security.replaceXmlCharacters(text);
}
public long getId() {
return id;
}
public String getText() {
return text;
}
private long id = System.currentTimeMillis();
private String text;
}
5、到此为止可以写页面代码了,下面的代码html或者jsp都可以
<body onload="dwr.engine.setActiveReverseAjax(true);">
<script type='text/javascript' src='/sperc/dwr/interface/DWRHelper.js'></script>
<script type='text/javascript' src='/sperc/dwr/engine.js'></script>
<script type='text/javascript' src='/sperc/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 Message: <input id="text" onkeypress="dwr.util.onReturn(event, sendMessage)" /> <input type="button" value="Send" onclick="sendMessage()" /></p>
<script type="text/javascript">
function sendMessage() {
alert(dwr.util.getValue("text"));
DWRHelper.addMessage(dwr.util.getValue("text"));
}
</script>
<hr />
<ul id="chatlog" style="list-style-type:none;">
</ul>
</body>
页面代码简单吧,只有方法调用,没有任何获得返回数据,和对回传数据处理的代码
注意:<body onload="dwr.engine.setActiveReverseAjax(true);">
这个是要在使用reverse-ajax的页面必须的!
现在可以启动应用体检一把reverse-ajax,希望你能和我有一样的惊奇感觉
当然,肯定有人会说这种功能用普通的ajax也可以实现啊,为什么要用reverse-ajax
这时候你就要考虑这种情况了,有用户A和用户B同时在发Message,A正在看message没有任何request动作,而B发了一条新message,这时要求这个信息要展现给A看,那么普通的ajax可以处理这种功能吗?这就是reverse-ajax的用途,可以从服务段向brower下推信息
发表评论
-
resin3.1配置说明
2010-12-14 16:07 851<!-- Resin 3.1 配置文件. --> ... -
resion 2.x配置
2010-12-14 16:06 1166resion 2.x配置 1. <http h ... -
sqlserver 递归查询
2010-12-01 17:20 798WITH read_tree (id,department ... -
20个非常有用的Java程序片段
2010-08-31 22:58 1388下面是20个非常有用的Java程序片段,希望能对你有用。1. ... -
ajax post提交乱码
2010-08-10 17:28 15956月30日 jQuery ajax乱码问题解决 一、测试环 ... -
IE注册表设置安全项
2010-07-30 17:16 2258Windows安全设置之注册表项在IE4.0以上的版本中,IE ... -
AD、CA、SSL,绑定keystore
2010-04-12 22:37 2640本文原文出处:http://blog.csdn.net/fre ... -
理解REST软件架构(转)
2010-01-01 23:47 864一种思维方式影响了软件行业的发展。REST软件架构是当今世界上 ... -
数据整合_SP
2009-12-18 14:50 761CREATE OR REPLACE PACKAGE BODY ... -
屏蔽数据_SP
2009-12-18 14:46 747CREATE OR REPLACE PACKAGE BODY ... -
数据抽取_SP
2009-12-18 14:44 928CREATE OR REPLACE PACKAGE BODY ... -
合并清洗
2009-12-18 14:41 741CREATE OR REPLACE PACKAGE BODY ... -
数据清洗_sp
2009-12-18 14:39 762CREATE OR REPLACE PACKAGE BODY ... -
test_help_sp
2009-12-18 08:24 718CREATE OR REPLACE PACKAGE BODY ... -
数据清洗2
2009-12-18 08:23 815create or replace package body ... -
数据清洗3
2009-12-18 08:22 824CREATE OR REPLACE PACKAGE BODY ... -
java反射
2009-10-17 21:46 972Reflection 是Java被视为动态(或准动态)语言 ... -
oracle sql
2009-09-23 10:29 632select * from PDS_DELIVERY_REQU ... -
开闭原则 思考(转)
2009-09-17 12:56 861开闭原则的定义 Software entities shou ... -
oracle函数
2009-09-16 23:38 1036oracle时间函数 相信很多人都有过统计某些数据的经历,比 ...
相关推荐
4. **Reverse Ajax**: DWR提供了逆向AJAX功能,即服务器可以主动向客户端推送数据,而无需客户端触发。 接下来,`dwr-noncla.jar`可能包含非版权许可的版本或者特定的构建,用于某些特殊环境或避免版权问题。具体...
1. **Reverse AJAX**:DWR的核心特性之一是反向AJAX,即服务器主动向客户端推送数据,而不仅仅是响应客户端的请求。这使得用户界面可以实时更新,提高了用户体验。 2. **JavaBeans与JavaScript对象映射**:DWR自动...
5. **Reverse Ajax**:DWR的核心特性,使服务器可以主动向客户端发送数据,而不仅仅是响应客户端请求。 学习DWR的过程中,你还需要掌握以下技能: - 基本的JavaScript和HTML/CSS知识,因为DWR主要与前端交互。 - ...
在"DWR AJAX实例"中,我们主要关注的是如何通过DWR框架来实现AJAX的功能。首先,DWR允许你定义Java方法以便在JavaScript中直接调用,这极大地简化了客户端与服务器之间的交互。例如,你可以定义一个返回String或List...
Engine通过反向Ajax(Reverse Ajax)技术实现异步通信。 2. **Servlet**:DWR Servlet是部署在服务器上的一个组件,它接收来自浏览器的请求,然后转发给相应的Java对象进行处理。 3. **Mapping**:DWR使用XML或...
3. **逆向Ajax(Reverse Ajax)**:DWR实现的一种机制,允许服务器主动向客户端发送数据,而不仅仅依赖于用户触发的请求。 **DWR的工作流程:** 1. **客户端请求**:JavaScript通过DWR API调用服务器端的方法,...
4. **反向AJAX(Reverse AJAX)**:DWR实现了反向AJAX,即服务器可以主动向客户端推送数据,而不仅仅是响应客户端的请求。 接下来,我们将探讨如何使用DWR进行基本操作: 1. **创建Java类**:首先,我们需要在...
1. **反向Ajax(Reverse Ajax)**:DWR的核心功能之一是实现反向Ajax,即服务器可以主动向客户端推送数据,而不仅仅是响应客户端的请求。这使得Web应用能够实现类似桌面应用的即时更新效果。 2. **安全机制**:DWR...
1. **Reverse Ajax**:DWR的核心特性之一是实现了Reverse Ajax,即由服务器向客户端推送数据,这在传统的Ajax模型中是不允许的。通过这种方式,DWR能够实现实时的双向通信,提高了Web应用的交互性和用户体验。 2. *...
- **Reverse AJAX Servlet**: DWR自动配置的Servlet,接收来自JavaScript的请求,并调用相应的Java方法。 - **Auto-Discovery**: DWR可以自动发现Java类中公开的方法,并暴露给JavaScript使用,只需要简单的注解...
原理: FileUpload实现上传功能, UploadListener 监听上传进度, DWR push (Reverse Ajax) 进度信息并更新页面, 实现无刷新多文件上传 运行环境: Tomcat 5/6 测试通过 说明:累计上传文件不超过10M(可以更改...
它支持动态Java对象到JavaScript对象的映射(也称为Reverse Ajax或Ajax RPC)。此版本的更新可能包括性能提升、新功能添加以及对旧版的兼容性改进。 2. **DWR的实例war文件**: 一个WAR(Web Application Archive...
- `gi`、`reverseajax`、`simple`、`json`、`tabs`、`people`:这些可能是DWR3.0的特定功能或示例,例如“reverseajax”可能涉及到DWR的反向Ajax功能,让服务器主动触发客户端的事件;“json”可能展示了如何使用...
此外,还需要创建一个或多个`dwr-engine.xml`和`dwr-reverse-ajax.xml`配置文件,用来定义允许客户端访问的Java类和方法。 2. **Java后端**:DWR允许你定义一组可被远程调用的Java类和方法。这些类通常包含在你的...
- **Reverse Ajax**:DWR使用反向Ajax实现服务器向客户端的推送,使得服务器能够主动更新客户端的状态。 - **Cafe豆**:Cafe豆是一种特殊的Java类,用于定义可从JavaScript访问的Java对象和方法。 3. **DWR的使用...
5. **ReverseAjax**:实现服务器到客户端的数据推送。 ### 五、DWR的使用步骤 1. **引入依赖**:在项目中添加DWR的JAR包或Maven依赖。 2. **配置**:创建`dwr.xml`,声明可公开的Java类和方法。 3. **编写Java...
2. **Reverse AJAX**:DWR实现了所谓的“反向AJAX”,即服务器可以主动推送数据到客户端,而不仅仅是响应客户端的请求。 3. **AutoComplete**:DWR提供了一个方便的自动补全功能,用于在输入框中为用户提供建议,...
- **Reverse Ajax**:DWR实现服务器主动推送数据到客户端,实现双向通信。 - **Security**:DWR提供了安全机制,如CSRF防护,确保了跨域通信的安全性。 3. **DWR的使用步骤** - **配置**:在服务器端添加DWR的...
本文将围绕一个基于Java的反向Ajax聊天实例——"反向Ajax聊天简单例子"进行详细解析。 1. 反向Ajax原理: 反向Ajax的核心思想是通过持久连接(Persistent Connection)或轮询(Polling)等技术,使服务器能够在有...