微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

DWR高级主题之反向Ajax(DWR3的comat模式演示1)

原文http://www.jb51.cc/article/p-drjrcnmm-pp.html

DWR高级主题之反向Ajax(DWR3的comat模式演示1)

----------

web.xml

[html] view plain copy
  1. <?xmlversion="1.0"encoding="UTF-8"?>
  2. <web-appxmlns="http://java.sun.com/xml/ns/j2ee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3. xsi:schemaLocation="http://java.sun.com/xml/ns/j2eehttp://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
  4. version="2.4">
  5. display-name>firstDWR</>
  6. welcome-file-listwelcome-file>index.html <!--TheDWRServlet...-->
  7. servlet>DWRServletservlet-name>dwr-invokerservlet-class>org.directwebremoting.servlet.DwrServlet <!--初始化参数,增加调试功能-->
  8. init-paramparam-name>debugparam-value>true<!--跨域调用配置信息,不是必须的-->
  9. >crossDomainSessionSecurity>false<!--下面是comet模式的反向Ajax所需要的参数-->
  10. >activeReverseAjaxEnabledservlet-mappingurl-pattern>/dwr/*web-app>

dwr.xml

copy
    <!DOCTYPEdwrPUBLIC
  1. "-//GetAheadLimited//DTDDirectWebRemoting3.0//EN""http://getahead.org/dwr/dwr30.dtd"dwrallowcreatecreator="new"javascript="MathDelegate"paramname="class"value="app.MathDelegate"/>
  2. create>

java文件

[java] copy
    packageapp;
  1. importorg.directwebremoting.browser;
  2. importorg.directwebremoting.ScriptSessions;
  3. publicclassMathDelegate{
  4. privatestaticintnum=1;
  5. /**
  6. *推送数字到页面上去
  7. *
  8. *@paramuserid
  9. *@paramrequest
  10. *@return
  11. */
  12. voiddwrHandle(){
  13. browser.withAllSessions(newRunnable(){
  14. voidrun(){
  15. try{
  16. Thread.sleep(1000);
  17. }catch(InterruptedExceptione){
  18. e.printstacktrace();
  19. }
  20. //funA为页面一个js函数,num++为funA的参数
  21. ScriptSessions.addFunctionCall("funA",num++);
  22. }
  23. });
  24. *触发推送的方式(触发10次),comet方式,有数据的情况下触发推送
  25. voidhandle()throwsInterruptedException{
  26. intm=0;
  27. while(m++<10){
  28. 3000);
  29. dwrHandle();
  30. }

index.html

copy
    htmlheadMetahttp-equiv="Content-Type"content="text/html;charset=UTF-8"title>firstdwrscripttype="text/javascript"src="dwr/engine.js">script<!--注意:反向Ajax中,util.js是必须包含的-->
  1. scripttype="text/javascript"src="dwr/util.js"scripttype="text/javascript"src="dwr/interface/MathDelegate.js"<!--轮询模式与comet模式的反向Ajax所需要的配置-->
  2. dwr.engine.setActiveReverseAjax(true);
  3. <!--
  4. //重点关于解决页面每刷新一次会多创建一个新的ScriptSession的解决方法
  5. //由于ScriptSession的创建机制不同于HttpSession,它会在每次页面刷新的时候都会重新创建,而销毁机制却是失去连接
  6. //或者失效之后一定时间才会自动销毁,这样就可能造成服务端可能就保存了很多的无用的ScriptSession,所以不仅仅会影响
  7. //性能问题,更重要的是,可能就不能实现你想要的功能
  8. //解决方法是在接收消息的页面,也就是你调用dwr.engine.setActiveReverseAjax(true);的页面调用一个dwr的方法
  9. //dwr.engine.setNotifyServerOnPageUnload(true);
  10. //这个方法功能就是在销毁或刷新页面时销毁当前ScriptSession,这样就保证了服务端获取的ScriptSession集合中没有
  11. //无效的ScriptSession对象。
  12. -- dwr.engine.setNotifyServerOnPageUnload(true);
  13. functionstart(){
  14. MathDelegate.handle();
  15. functionfunA(num){
  16. document.getElementById("resultDiv").innerHTML="<h1>"+num+"h1>";
  17. bodyhr/>
  18. DWR演示:brspanid="resultDiv"spaninputtype="button"value="start"onclick="start();">
  19. 原文http://www.jb51.cc/article/p-drjrcnmm-pp.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐