| 
                         实例分为两个页面  
sendMsg.jsp页面 ,发送一段消息给后台 ,然后后台将消息推送到showMsg.jsp页面  
web.xml配置  
 
 
  
  
  -  <?xmlversion="1.0"encoding="UTF-8"?>
  
  -  <web-appxmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns="http://java.sun.com/xml/ns/javaee"xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"xsi:schemaLocation="http://java.sun.com/xml/ns/javaeehttp://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"id="WebApp_ID"version="2.5">
  
  -  <display-name>dwr3</display-name>
  
  -  <welcome-file-list>
  
  -  <welcome-file>index.jsp</welcome-file>
  
  -  </welcome-file-list>
  
  -  <servlet>
  
  -  <servlet-name>dwr-invoker</servlet-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>
  
  -  <url-pattern>/dwr/*</url-pattern>
  
  -  </servlet-mapping>
  
  -  </web-app>
  
   
  
  
sendMsg.java 推送类 
 
 
 
  
  packagecom.zf.dwr; 
  -  
  
  -  importjava.util.Collection;
  
  -  importorg.directwebremoting.ScriptBuffer;
  
  -  importorg.directwebremoting.ScriptSession;
  
  -  importorg.directwebremoting.WebContext;
  
  -  importorg.directwebremoting.WebContextFactory;
  
  -  importorg.directwebremoting.proxy.dwr.Util;
  
  -  publicclassSendMsg{
  
  -  @SuppressWarnings("deprecation")
  
  -  publicvoidsendMsg(Stringmsg){
  
  -  
  
  -  WebContextcontex=WebContextFactory.get();
  
  -  
  
  -  
  
  -  Collection<ScriptSession>sessions=contex.getScriptSessionsByPage("/dwr3/showMsg.jsp");
  
  -  
  
  -  Utilutil=newUtil(sessions);
  
  -  
  
  -  ScriptBuffersb=newScriptBuffer();
  
  -  sb.appendScript("show(");
  
  -  sb.appendData(msg);
  
  -  sb.appendScript(")");
  
  -  
  
  -  util.addScript(sb);
  
  -  }
  
  -  }
  
   
  
  
dwr.xml配置 
 
 
 
  
  <!DOCTYPEdwrPUBLIC 
  -  "-//GetAheadLimited//DTDDirectWebRemoting3.0//EN"
  
  -  "http://getahead.org/dwr/dwr30.dtd">
  
  -  <dwr>
  
  -  <allow>
  
  -  <createcreator="new"javascript="SendMsg">
  
  -  <paramname="class">com.zf.dwr.SendMsg</param>
  
  -  </create>
  
  -  </allow>
  
  -  </dwr>
  
   
  
  
sendMsg.jsp 
 
 
 
  
  <%@pagelanguage="java"contentType="text/html;charset=utf-8" 
  -  pageEncoding="utf-8"%>
  
  -  <!DOCTYPEhtmlPUBLIC"-//W3C//DTDHTML4.01Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
  
  -  <html>
  
  -  <head>
  
  -  <metahttp-equiv="Content-Type"content="text/html;charset=utf-8">
  
  -  <scripttype="text/javascript"src="dwr/util.js"></script>
  
  -  <scripttype="text/javascript"src="dwr/engine.js"></script>
  
  -  <scripttype="text/javascript"src="dwr/interface/SendMsg.js"></script>
  
  -  <scripttype="text/javascript"src="jquery-1.7.1.js"></script>
  
  -  <scripttype="text/javascript">
  
  -  $(function(){
  
  -  dwr.engine.setActiveReverseAjax(true);
  
  -  $("#but").click(function(){
  
  -  SendMsg.sendMsg($("#msg").val());
  
  -  });
  
  -  });
  
  -  </script>
  
  -  <title>Inserttitlehere</title>
  
  -  </head>
  
  -  <body>
  
  -  <inputtype="text"id="msg"/>
  
  -  <inputtype="button"value="发送"id="but"/>
  
  -  </body>
  
  -  </html>
  
   
  
  
showMsg.jsp 
 
 
 
  
  <scripttype="text/javascript"src="jquery-1.7.1.js"></script> 
  -  <scripttype="text/javascript">
  
  -  $(function(){
  
  -  //这句话千万不能少,表示允许使用推送技术
  
  -  //这个函数是提供给后台推送的时候调用的
  
  -  functionshow(msg){
  
  -  $("#message").text(msg);
  
  -  </script>
  
  -  <title>Inserttitlehere</title>
  
  -  </head>
  
  -  <body>
  
  -  <divid="message"style="width:200px;height:200px;border:1pxsolidred;text-align:center;padding:5px;"></div>
  
  -  </html>
  
   
  
    
    
    
使用dwr推送技术时 需要有WebContext 对象,但是WebContext 对象需要通过WebContextFactory.get();获取 , 而WebContextFactory.get(); 方法只有当页面请求某个java方法时,在该方法中调用WebContextFactory.get(); 才能得到值。 否则是取不到值的。    
然后通过WebContext 获取指定的页面 。再向页面推送消息 。  
有一个问题是当后来又新开了页面,却收不到消息 。  
可以使用一个线程,去定时的更新Collection<ScriptSession> 对象                         (编辑:李大同) 
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! 
                     |