页面 <%-- Document : index Created on : Oct 16, 2009, 10:42:54 AM Author : --%> <%@page contentType="text/html" pageEncoding="UTF-8"%> <mce:script type='text/javascript' src="/DwrReverseAjax/dwr/interface/PutSomethingToPage.js" mce_src="DwrReverseAjax/dwr/interface/PutSomethingToPage.js"></mce:script> <mce:script type='text/javascript' src="/DwrReverseAjax/dwr/engine.js" mce_src="DwrReverseAjax/dwr/engine.js"></mce:script> <mce:script type='text/javascript' src="/DwrReverseAjax/dwr/engine.js" mce_src="DwrReverseAjax/dwr/engine.js"></mce:script> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <mce:script type="text/javascript"><!-- function putstart(){ alert("begin"); PutSomethingToPage.begin(); } function reverseFunction(data){ document.all.backtext.value=data; } // --></mce:script> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>JSP Page</title> </head> <body οnlοad="dwr.engine.setActiveReverseAjax(true);"> <input id="submit" type="submit" value="begin" οnclick="putstart()"/> <input type="text" id="backtext" name="backtext" value="" /> </body> </html> java代码 /* * To change this template, choose Tools | Templates * and open the template in the editor. */ package dwr.ReverseThread; import org.directwebremoting.WebContext; import org.directwebremoting.WebContextFactory; import org.directwebremoting.annotations.RemoteMethod; import org.directwebremoting.annotations.RemoteProxy; import org.directwebremoting.proxy.ScriptProxy; /** * * @author duanjunwei */ @RemoteProxy(name="putpageinfo") public class PutSomethingToPage extends Thread{ private static WebContext wctx = null; private ScriptProxy sp = null; private String pi="just test!"; @Override public void run(){ try { for(int i=0;i<100;i++){ Thread.sleep(1000); if(sp == null){ sp = new ScriptProxy(wctx.getScriptSessionsByPage(wctx.getCurrentPage())); } sp.addFunctionCall("reverseFunction", i); System.out.println(pi+"has been put out to page"); } } catch (Exception ex) { ex.printStackTrace(); } } @RemoteMethod public void begin(){ if(wctx==null){ wctx=WebContextFactory.get(); } if(sp == null){ sp = new ScriptProxy(wctx.getScriptSessionsByPage(wctx.getCurrentPage())); } System.out.println("put begin!"); PutSomethingToPage pp=new PutSomethingToPage(); pp.start(); } } 创建工程后启动在index.jsp中点开始后后台会一直给前台发送消息1-100