`
liushengit
  • 浏览: 36493 次
  • 性别: Icon_minigender_1
  • 来自: 石家庄
社区版块
存档分类
最新评论

自己写的一个反向Ajax的Demo,在此记下笔记

    博客分类:
  • SSH
 
阅读更多

  今天无意间看到了一篇关于dwr的文章,讲的是反向Ajax,想了想半年前一个项目的功能需求如果用它实现就太完美了。
项目要求是:数据库中A表中如果有了新的数据,系统的管理界面上要实时的显示出来,提醒给操作人员(是某种报警信息,好像特别重要)。

当时的实现方法是:让一Iframe里的页面每隔多少秒就刷新一次,来监视数据库A表的变化。这样客户端不断地向服务发送请求,服务器被动的返回客户端想要的数据。

反向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 ︶ㄣ旺  http://syw.35free.net
 * @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/chat1.jsp"; //要推信息的页面地址  
        
        //获得所有已经打开此页面的会话
        Collection sessions = wctx.getScriptSessionsByPage(currentPage);   
        Util utilAll = new Util(sessions);
        
        //将消息从LinkedList中取出来,放放到一个字符串数组中
        //在这里遇到一个问题,就是直接用String[] msgs = (String[])list.toArray();时,报类型转换错误
        //但如下,给toArray()方法传递一个空的数组就不报错了,求解中....
        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一直处于失去焦点状态,却能实时地显示服务器端更新的数据

 

  • 大小: 33.5 KB
分享到:
评论

相关推荐

    反向ajax教程 (自己整理的两篇)

    DWR(Direct Web Remoter)是一个开源JavaScript库,它提供了反向Ajax的支持。启用DWR的反向Ajax功能只需在`web.xml`的DWRServlet配置中添加初始化参数`activeReverseAjaxEnabled`并设置其值为`true`。 反向Ajax的...

    反向ajax

    **反向Ajax(Reverse Ajax)**,又称为**Comet技术**,是Web开发中的一种创新方式,主要用于实现服务器向客户端的实时数据推送。在传统的Ajax应用中,主要是客户端通过JavaScript向服务器发送异步请求,获取数据并...

    dwr反向Ajax的三种情况

    DWR(Direct Web Remoting)是一种Java库,它允许Web应用程序实现实时的双向通信,即反向Ajax。反向Ajax是指服务器能够主动地向客户端浏览器推送数据,而不仅仅是响应客户端的请求。DWR提供了三种反向Ajax技术,分别...

    反向Ajax的小例子

    dwr实现的在线即时聊天demo,比较简化的一个反向ajax例子, &lt;br&gt;everse Ajax主要是在BS架构中,从服务器端向多个浏览器主动推数据的一种技术。它的一种实现就是客户端向服务器请求后,服务器不立即回应,从而导致一...

    dwr的例子 反向AJAX 实现时时提醒

    Direct Web Remoting (DWR) 是一个开源Java库,它允许在浏览器和服务器之间进行安全、高效的异步通信,即所谓的“反向AJAX”或“Comet”技术。DWR使得JavaScript能够调用服务器端的Java方法,就像它们是本地函数一样...

    反向Ajax的聊天室

    在《基于J2EE的Ajax宝典》中,可能会详细讲解如何使用DWR来创建一个反向Ajax聊天室。首先,你需要设置DWR配置,包括在Web应用的WEB-INF目录下创建dwr.xml文件,定义允许的Java方法供JavaScript调用。接着,你会在...

    反向ajax聊天简单例子

    在反向Ajax聊天实例中,DWR可能负责创建一个服务器端的监听器,当有新消息时,通过DWR API向所有连接的客户端发送更新。 4. 实例代码分析: - `*.java`文件:这些可能是Java类,包括聊天服务端的处理逻辑,如用户...

    Comet,反向Ajax,直接就能跑

    dwr comet 反向ajax实力 直接抛 我打了一个包, 放到Tomcat,jetty下面就能直接跑了 很方便 还有注视 对新手 。。。。很好的

    反向ajax技术实现聊天室功能

    如果你还是停留在原来的ajax层面的话,这次绝对让你眼前一亮。绝对不贵哦,大家下了就知道了... DWR出2.0版了,其中最大的亮点就是Reverse Ajax技术!传统的浏览器发起请求服务器返回响应,而现在通过反向ajax可以由...

    MyBatis反向工程Demo

    MyBatis反向工程是数据库建模到代码生成的一种实用工具,它可以帮助开发者自动生成Java实体类、Mapper接口以及XML配置文件,极大地提高了开发效率。本Demo将展示如何使用MyBatis Generator(MBG)来实现这一过程。 ...

    Swift语言利用Closure闭包实现反向传值Demo

    总之,Swift的Closure闭包为我们提供了一种灵活且高效的方式,能够在多个视图控制器之间传递数据,特别是在需要反向传值的场景下。通过理解闭包的工作原理和使用技巧,开发者能够更好地利用Swift的强大功能,创建出...

    Block反向传值Demo

    Block反向传值在iOS开发中是一种常见的编程技巧,...这个Demo可能包含了一个简单的界面,用户输入数据后,通过点击按钮触发Block反向传值的过程,将结果显示在界面上。这样的实践将有助于加深你对Block反向传值的理解。

    dwr课件,java,反向ajax

    它允许JavaScript在客户端与服务器端的Java对象之间进行直接调用,无需刷新页面,从而实现了所谓的“反向Ajax”或者“富互联网应用”(RIA)的功能。本课件主要涵盖了DWR的基本用法和常见操作,包括数据类型的处理、...

    基于反向Ajax技术的终端驱动Web服务.pdf

    【反向Ajax技术】是Web开发中的一个重要概念,它是在传统Ajax技术的基础上发展起来的,主要解决了传统Ajax技术无法实现实时性较高场景的问题。传统Ajax技术是客户端发起请求,服务器响应并返回数据,而反向Ajax则是...

    java 反向代理demo

    java 反向代理demo

    《Ajax笔记》

    就业班时,就业老师整理的关于 Ajax的面试笔记,里边含有javaScript基础加强, Ajax编程入门,jQuery框架等一些核心资料。 核心内容概述 1.JavaScript加强,涉及到ECMAScript语法、BOM对象、DOM...7.反向Ajax编程(彗星)

    Java Web登录Demo(SSM+Ajax)

    demo主要运用SSM框架完成用户的登录功能;demo集成了MyBatis反向生成工程;demo的后台运用了spring的自动注入、springMVC的请求驱动、MyBatis面向接口数据库编程技术;JSP前台和后台交互的响应模式;

    Dwr 官方Reverse Ajax Demo

    **DWR (Direct Web Remoting) 是一个开源的Java库,允许Web应用程序在客户端和服务器之间进行实时的、异步的通信。它通过JavaScript API在浏览器端与Java方法交互,从而实现了Reverse Ajax(也称为Comet技术),即...

Global site tag (gtag.js) - Google Analytics