反向ajax-dwr

3 篇文章 0 订阅
反向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" οnkeypress="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 οnlοad="dwr.engine.setActiveReverseAjax(true);">       
  DWR反向Ajax示例信息显示<br>      
     ul:   
     <ul id="ul">  
        
     </ul>      
  </body>     
    
</html>   


运行效果如图: 

这时showMsg.jsp一直处于失去焦点状态,却能实时地显示服务器端更新的数据 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值