- 浏览: 724529 次
- 性别:
- 来自: 天津
文章分类
- 全部博客 (442)
- 中间件 (20)
- hibernate (13)
- spring (20)
- 数据库 (78)
- struts (8)
- ibatis (4)
- 前端 (61)
- linux,windows (21)
- it大环境 (32)
- IDE工具 (36)
- 感悟 (6)
- java基础 (40)
- 经典面试题 (10)
- exception总结 (14)
- 软件设计 (8)
- 工具类应用及新技术 (48)
- php (2)
- 微信 (1)
- 设计模式 (2)
- 重构 (3)
- 管理 (2)
- 工作笔记 (1)
- jmx (1)
- 算法 (4)
- 多线程同步 (2)
- 代码管理工具 (5)
- 代码检测及测试 (2)
- 缓存服务 (1)
- SOA及ROA (5)
- groovy (1)
- 网络编程 (2)
- 大数据 (6)
最新评论
-
love398146779:
我当然不能全写上面了,这只是其中一部分https连接。
java 建立 https连接 -
yuenkin:
大哥,这是双向认证吗?
java 建立 https连接 -
issu:
例如以下代码能遍历字符串"Tom:M ...
<c:forTokens>标签delims截取字符 -
love398146779:
2*3*5=30,是30个以上的请求才拒绝呀。
tomcat的maxThreads、acceptCount(最大线程数、最大排队数) -
love398146779:
2台跟1台一样的效果。
zookeeper与activemq最新存储replicatedLevelDB整合
反向Ajax技术是服务器向客户端主动的发关数据,很大的减少了服务的负担。
学习新的知识点就要多写些自己的Demo,在这里写一个最简单的例子,以作笔记:
sendMsg.jsp负责向表中添加数据(更新数据库),showMsg.jsp用来实时显示前者添加的信息。
dwr.xml
<!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 3.0//EN" "http://getahead.org/dwr//dwr30.dtd"> <dwr>
<allow>
<create creator="new" javascript="SendMsg" scope="session">
<param name="class" value="com.dwr.bean.SendMsg" />
</create>
</allow>
</dwr>
SendMsg.java
package com.dwr.bean;
import java.util.Collection;
import java.util.LinkedList;
import org.directwebremoting.WebContext;
import org.directwebremoting.WebContextFactory;
import org.directwebremoting.proxy.dwr.Util;
/**
* DWR反向Ajax示例
* @author ︶ㄣ旺
* @version 1.0
* */
public class SendMsg
{
public static WebContext wctx = null;
//用一个List代表数据库 来储存消息
private LinkedList list = new LinkedList();
//调用添加和显示方法
public void sendMsg(String msg)
{
list.addFirst(msg);
//最多保留10条聊天记录
if(list.size()>10){
list.removeLast();
}
wctx = WebContextFactory.get();
Util utilThis = new Util(wctx.getScriptSession());
//使用utilThis重置 Id 属性为 msg 的文本框的内容
utilThis.setValue("msg", "请输入信息");
String currentPage = "/login/showMsg.jsp"; //要推信息的页面地址
//获得所有已经打开此页面的会话
Collection sessions = wctx.getScriptSessionsByPage(currentPage);
Util utilAll = new Util(sessions);
//将消息从LinkedList中取出来,放放到一个字符串数组中
String[] msgs = new String[list.size()];
msgs = (String[]) list.toArray(msgs);
//先清空页面的消息内容,去除ul元素下所有元素
utilAll.removeAllOptions("ul");
//向页面添加消息内容
utilAll.addOptions("ul", msgs);
}
}
sendMsg.jsp
<%@ page language="java" pageEncoding="UTF-8"%>
<%@ page isELIgnored="false" %>
<html>
<head>
<title>DWR反向Ajax示例</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<script type='text/javascript' src='${pageContext.request.contextPath}/dwr/interface/SendMsg.js'></script>
<script type='text/javascript' src='${pageContext.request.contextPath}/dwr/engine.js'></script>
<script type='text/javascript' src='${pageContext.request.contextPath}/dwr/util.js'></script>
<script type="text/javascript">
function sendMessage()
{
var msg = $("msg").value;
SendMsg.sendMsg(msg);
}
</script>
</head>
<body>
DWR反向Ajax示例信息添加<br>
输入信息:<input type="text" id="msg" name="msg" onkeypress="dwr.util.onReturn(event,sendMessage)">
</body>
</html>
showMsg.jsp
<%@ page language="java" pageEncoding="UTF-8"%>
<%@ page isELIgnored="false" %>
<html>
<head>
<title>DWR反向Ajax示例</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<script type='text/javascript' src='${pageContext.request.contextPath}/dwr/engine.js'></script>
<script type='text/javascript' src='${pageContext.request.contextPath}/dwr/util.js'></script>
</head>
<body onload="dwr.engine.setActiveReverseAjax(true);">
DWR反向Ajax示例信息显示<br>
ul:
<ul id="ul">
</ul>
</body>
</html>
运行效果如图:
这时showMsg.jsp一直处于失去焦点状态,却能实时地显示服务器端更新的数据
学习新的知识点就要多写些自己的Demo,在这里写一个最简单的例子,以作笔记:
sendMsg.jsp负责向表中添加数据(更新数据库),showMsg.jsp用来实时显示前者添加的信息。
dwr.xml
<!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 3.0//EN" "http://getahead.org/dwr//dwr30.dtd"> <dwr>
<allow>
<create creator="new" javascript="SendMsg" scope="session">
<param name="class" value="com.dwr.bean.SendMsg" />
</create>
</allow>
</dwr>
SendMsg.java
package com.dwr.bean;
import java.util.Collection;
import java.util.LinkedList;
import org.directwebremoting.WebContext;
import org.directwebremoting.WebContextFactory;
import org.directwebremoting.proxy.dwr.Util;
/**
* DWR反向Ajax示例
* @author ︶ㄣ旺
* @version 1.0
* */
public class SendMsg
{
public static WebContext wctx = null;
//用一个List代表数据库 来储存消息
private LinkedList list = new LinkedList();
//调用添加和显示方法
public void sendMsg(String msg)
{
list.addFirst(msg);
//最多保留10条聊天记录
if(list.size()>10){
list.removeLast();
}
wctx = WebContextFactory.get();
Util utilThis = new Util(wctx.getScriptSession());
//使用utilThis重置 Id 属性为 msg 的文本框的内容
utilThis.setValue("msg", "请输入信息");
String currentPage = "/login/showMsg.jsp"; //要推信息的页面地址
//获得所有已经打开此页面的会话
Collection sessions = wctx.getScriptSessionsByPage(currentPage);
Util utilAll = new Util(sessions);
//将消息从LinkedList中取出来,放放到一个字符串数组中
String[] msgs = new String[list.size()];
msgs = (String[]) list.toArray(msgs);
//先清空页面的消息内容,去除ul元素下所有元素
utilAll.removeAllOptions("ul");
//向页面添加消息内容
utilAll.addOptions("ul", msgs);
}
}
sendMsg.jsp
<%@ page language="java" pageEncoding="UTF-8"%>
<%@ page isELIgnored="false" %>
<html>
<head>
<title>DWR反向Ajax示例</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<script type='text/javascript' src='${pageContext.request.contextPath}/dwr/interface/SendMsg.js'></script>
<script type='text/javascript' src='${pageContext.request.contextPath}/dwr/engine.js'></script>
<script type='text/javascript' src='${pageContext.request.contextPath}/dwr/util.js'></script>
<script type="text/javascript">
function sendMessage()
{
var msg = $("msg").value;
SendMsg.sendMsg(msg);
}
</script>
</head>
<body>
DWR反向Ajax示例信息添加<br>
输入信息:<input type="text" id="msg" name="msg" onkeypress="dwr.util.onReturn(event,sendMessage)">
</body>
</html>
showMsg.jsp
<%@ page language="java" pageEncoding="UTF-8"%>
<%@ page isELIgnored="false" %>
<html>
<head>
<title>DWR反向Ajax示例</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<script type='text/javascript' src='${pageContext.request.contextPath}/dwr/engine.js'></script>
<script type='text/javascript' src='${pageContext.request.contextPath}/dwr/util.js'></script>
</head>
<body onload="dwr.engine.setActiveReverseAjax(true);">
DWR反向Ajax示例信息显示<br>
ul:
<ul id="ul">
</ul>
</body>
</html>
运行效果如图:
这时showMsg.jsp一直处于失去焦点状态,却能实时地显示服务器端更新的数据
发表评论
-
JSONP
2014-12-11 17:35 575一个JQUERY调用跨域访问的例子 <!DOCTYPE ... -
用js原型给js添加方法
2014-10-22 15:22 607/** * String原型加入,replaceAll方法 ... -
easyui datagrid 大数据加载效率慢,优化解决方法
2014-05-16 19:01 26060在使用easyui datagrid途中发现加载数据的效率真的 ... -
jquery自写插件slideLeft,slideRight
2014-04-02 10:54 1054<html> <head> < ... -
悬浮置顶
2014-03-25 11:05 657<html> <head> < ... -
悬浮窗口
2014-03-25 10:37 592<!DOCTYPE HTML PUBLIC " ... -
浮动窗口
2014-03-25 10:30 663找了好多,就这个能用,程序中的图片路径你自己修改成你自己的,链 ... -
from表单中的内容是否未改变
2013-09-26 13:30 585function isFormChanged(fm,excep ... -
jqueryEasyUI关于"datatye"引发的血案
2013-08-20 10:28 888项目改版,用到jqueryEasyUI. 后台权限json树写 ... -
jsp页面显示cpu使用率曲线图
2013-07-14 09:32 3337<%@ page language="java ... -
两个jsp传值后 param取值
2013-07-14 09:29 4321${param.barName} 等于 <%=reque ... -
ECSide标签属性说明之<ec:table>
2012-07-09 15:56 2525其很多默认值都在ecside.properties 中配置,所 ... -
jQuery防冲突
2012-06-26 09:53 860var j = jQuery.noConflict(); // ... -
帮朋友写的一个js.数据实时更新
2012-06-19 14:36 2249var mycount=""; //全局变 ... -
js也是易学难精
2012-06-14 10:20 1156function RemoveControl(elements ... -
getBoundingClientRect
2012-06-06 18:30 0getBoundingClientRect() 来获取页面元素 ... -
.一行代码解决各种IE兼容问题,IE6,IE7,IE8,IE9,IE10
2012-06-01 09:09 4147在网站开发中不免因为 ... -
json select
2012-05-25 23:17 1900jsSelectItemByValue(); 动态删除sel ... -
document.ready()和传统的方法<body onload=”load()”>
2012-04-18 17:53 3344document.ready()和传统的方法<body ... -
showModalDialog()方法使用详解
2012-04-09 15:29 723此文为转载!非常感 ...
相关推荐
Direct Web Remoting (DWR) 是一个开源Java库,它允许在浏览器和服务器之间进行安全、高效的异步通信,即所谓的“反向AJAX”或“Comet”技术。DWR使得JavaScript能够调用服务器端的Java方法,就像它们是本地函数一样...
DWR提供了三种反向Ajax技术,分别是轮询、Comet和PiggyBack。 1. **轮询(Polling)**: 轮询是最基础的反向Ajax技术。客户端每隔一定时间(例如几秒或几十秒)就向服务器发送一个请求,询问是否有新数据。如果有...
它允许JavaScript在客户端与服务器端的Java对象之间进行直接调用,无需刷新页面,从而实现了所谓的“反向Ajax”或者“富互联网应用”(RIA)的功能。本课件主要涵盖了DWR的基本用法和常见操作,包括数据类型的处理、...
4. **反向AJAX(Reverse AJAX)**:DWR实现了反向AJAX,即服务器可以主动向客户端推送数据,而不仅仅是响应客户端的请求。 接下来,我们将探讨如何使用DWR进行基本操作: 1. **创建Java类**:首先,我们需要在...
1. **反向Ajax(Reverse Ajax)**:DWR的核心是反向Ajax技术,它打破了传统的请求-响应模式,允许服务器主动推送数据到客户端,而不必等待用户的触发。 2. **Java远程调用(Remote Method Invocation, RMI)**:DWR...
反向Ajax,也称为Comet技术,是一种创新的Web应用通信模式,旨在克服传统Ajax模型中的实时性问题。在传统的Ajax应用中,客户端通过异步请求来获取服务器端的更新,这种方式并不真正实时,因为更新依赖于客户端的定期...
如果你还是停留在原来的ajax层面的话,这次绝对让你眼前一亮。绝对不贵哦,大家下了就知道了... ...传统的浏览器发起请求服务器返回响应,而现在通过反向ajax可以由服务器向浏览器发响应但是不需要浏览器提供请求。...
总结,"反向Ajax聊天简单例子"是一个学习反向Ajax技术的实践项目,通过DWR框架实现了服务器主动推送消息的聊天功能。理解并实践这个例子,有助于开发者掌握Ajax的高级用法,提升Web应用的实时性和互动性。
总结来说,反向Ajax聊天室是利用DWR框架实现的一种Web应用,它利用Ajax技术提供实时的聊天体验,而不需要用户频繁刷新页面。《基于J2EE的Ajax宝典》提供了详细的教学指导,涵盖了从服务器端到客户端的完整实现过程。...
1. **反向Ajax**:DWR允许服务器主动向客户端推送数据,而不仅仅是响应客户端的请求。 2. **安全机制**:DWR有内置的安全机制,如JavaScript防篡改,确保只有授权的代码可以执行。 3. **映射和转换**:DWR自动处理...
在描述中提到的“反向Ajax”(Reverse Ajax)是一种技术,它使得服务器可以主动向客户端推送数据,而不仅仅局限于客户端发起请求后服务器响应的传统模式。DWR支持这种模式,通过建立持久连接或者利用浏览器的长轮询...
3. **Reverse AJAX**:DWR实现了反向AJAX,即服务器主动推送数据到客户端。这对于实时应用(如聊天室、股票报价)非常有用。 4. **AutoComplete**:DWR提供了自动完成功能,用于在输入框中实现下拉提示,提高用户...
1. **DWR的基本概念**:包括DWR的工作原理,如反向AJAX、CORS(跨源资源共享)支持、安全性等基础概念。 2. **安装与配置**:如何在项目中引入DWR库,配置DWR的`dwr.xml`文件,以及在Web应用服务器上的部署步骤。 ...
dwr实现的在线即时聊天demo,比较简化的一个反向ajax例子, <br>everse Ajax主要是在BS架构中,从服务器端向多个浏览器主动推数据的一种技术。它的一种实现就是客户端向服务器请求后,服务器不立即回应,从而导致一...
- **Reverse Ajax**:DWR的反向Ajax功能,允许服务器主动推送数据到客户端。 ### 3. 使用DWR的步骤 1. **安装与配置**:将DWR库添加到项目类路径中,配置web.xml文件,注册DWRServlet。 2. **创建Java类和方法**:...
- **反向AJAX**:DWR的核心技术就是反向AJAX,即由服务器主动向浏览器发送数据,而不是等待用户触发请求。 - **Remote Object**:DWR将服务器端的Java对象映射为JavaScript对象,使得在JavaScript中可以直接调用...
- **配置web.xml**:在web.xml中添加DWR的Servlet配置,启用调试模式,并设置主动反向Ajax。 4. **运行与测试**: - 创建HTML或JSP页面,使用JavaScript调用SayHello.SayHelloByName()方法,传递参数并接收返回值...
DWR (Direct Web Remoting) 是一个开源Java库,它允许在浏览器和服务器之间进行实时的、异步的通信,即所谓的反向Ajax技术。在"DWR 3.0反向实例"中,我们将深入探讨这个版本的新特性、配置过程以及如何通过一个简单...
1. **Reverse AJAX**:DWR的核心特性之一是反向AJAX,即服务器主动向客户端推送数据,而不仅仅是响应客户端的请求。这使得用户界面可以实时更新,提高了用户体验。 2. **JavaBeans与JavaScript对象映射**:DWR自动...