DWR高级主题之反向Ajax(轮询模式实例--DWR2.X)

来源:互联网 发布:前端解析json数组 编辑:程序博客网 时间:2024/06/05 18:24
DWR高级主题之反向Ajax(轮询模式实例--DWR2.X)
----------
用maven进行构建: 

pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"><modelVersion>4.0.0</modelVersion><groupId>ddddd</groupId><artifactId>bbb</artifactId><packaging>war</packaging><version>0.0.1-SNAPSHOT</version><name>bbb Maven Webapp</name><url>http://maven.apache.org</url><dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>3.8.1</version><scope>test</scope></dependency><!-- 必需的依赖 --><dependency><groupId>org.directwebremoting</groupId><artifactId>dwr</artifactId><version>3.0.M1</version></dependency><!-- 必需的依赖 --><dependency><groupId>commons-logging</groupId><artifactId>commons-logging</artifactId><version>1.1.1</version></dependency></dependencies><build><finalName>bbb</finalName></build></project>


web.xml

<?xml version="1.0" encoding="UTF-8"?><web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"version="2.4"><display-name>firstDWR</display-name><welcome-file-list><welcome-file>index.html</welcome-file></welcome-file-list><!-- The DWR Servlet... --><servlet><display-name>DWR Servlet</display-name><servlet-name>dwr-invoker</servlet-name><servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class><!-- 初始化参数,增加调试功能 --><init-param><param-name>debug</param-name><param-value>true</param-value></init-param><!-- 跨域调用配置信息,不是必须的 --><init-param><param-name>crossDomainSessionSecurity</param-name><param-value>false</param-value></init-param><!-- 下面轮询模式的反向Ajax所需要的参数 --><init-param><param-name>activeReverseAjaxEnabled</param-name><param-value>true</param-value></init-param><init-param><param-name>org.directwebremoting.extend.ServerLoadMonitor</param-name><param-value>org.directwebremoting.impl.PollingServerLoadMonitor</param-value></init-param><!-- 我们可以设置轮询的频率为2秒 --><init-param><param-name>disconnectedTime</param-name><param-value>2000</param-value></init-param></servlet><servlet-mapping><servlet-name>dwr-invoker</servlet-name><url-pattern>/dwr/*</url-pattern></servlet-mapping></web-app>


dwr.xml

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 3.0//EN" "http://getahead.org/dwr/dwr30.dtd"><dwr><allow><create creator="new" javascript="MathDelegate"><param name="class" value="app.MathDelegate" /></create></allow></dwr>


MathDelegate.java

package app;import java.util.Collection;import org.directwebremoting.ScriptSession;import org.directwebremoting.WebContext;import org.directwebremoting.WebContextFactory;import org.directwebremoting.proxy.dwr.Util;public class MathDelegate {private static int num = 1;public void dwrHandle() throws InterruptedException{//这里是获取WebContext上下文WebContext wctx = WebContextFactory.get();//从上下文中获取当前页面,这些是DWR的反向Ajax要求的必须方式String currentPage = wctx.getCurrentPage();//一个page中可能存在多个ScriptSessionsCollection<ScriptSession> sessions = wctx.getScriptSessionsByPage(currentPage);//Util是DWR在Server端模拟Browse端dwr.util.js的类(也就是页面上要加入DWR的util.js),Engine也是同样的Util utilAll = new Util(sessions);while(true){//其实这里不应该用while(true)死循环,这里只是演示用!应该是有推送的数据了,就调用dwrHandle()Thread.sleep(3000);//注意:如果第三个参数设置为true,那么第二个参数会当成纯文本(不解析),否则作为html文本utilAll.setValue("resultDiv", "<b><h1>" + (num++) +"</h1></b>", false);}}}


index.html

<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><title>firstdwr</title><script type="text/javascript" src="dwr/engine.js"></script><!-- 注意:反向Ajax中,util.js是必须包含的 --><script type="text/javascript" src="dwr/util.js"></script><script type="text/javascript" src="dwr/interface/MathDelegate.js"></script><script><!--  轮询模式与comet模式的反向Ajax所需要的配置 -->dwr.engine.setActiveReverseAjax(true);function start(){MathDelegate.dwrHandle();}</script></head><body><hr/>DWR演示:<br><span id="resultDiv"></span><hr/><input type="button" value="start" onclick="start();"></body></html>




原创粉丝点击