posts - 122,  comments - 25,  trackbacks - 0
1、web.xml设置
  <servlet>
    
<servlet-name>dwr-invoker</servlet-name>
    
<servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class>
    
<init-param>
      
<param-name>activeReverseAjaxEnabled</param-name>
      
<param-value>true</param-value>
    
</init-param>
  
</servlet>
  
  
<servlet-mapping>
    
<servlet-name>dwr-invoker</servlet-name>
    
<url-pattern>/dwr/*</url-pattern>
  
</servlet-mapping>

2、client端将 setActiveReverseAjax设为true
dwr.engine.setActiveReverseAjax(true);

使用Reverse AJAX,client端就不用指定call back function,当执行server端的method时,会自动调用client端javascript来执行。

3、Server端通过ScriptSession,找到对到的client端JS方法
//取得当前执行页面
WebContext wctx = WebContextFactory.get();
String currentPage 
= wctx.getCurrentPage();
//取得目前执行中的ScriptSession
ScriptSession scriptSession = wctx.getScriptSession();
//或是取得某page开启中的client ScriptSession
Collection sessions = wctx.getScriptSessionsByPage("/ajax/client.jsp");

//根据ScriptSession来执行client端的 DWRUtil
Util utilThis = new Util(wctx.getScriptSession());

//调用WRUtil,在客户端生成相应的脚本,实现消息的输出
utilAll.removeAllOptions("chatlog");
utilAll.addOptions(
"chatlog", messages, "text");

4、网上的范例
chat.jsp页面,点击发送按钮,调用javascript的sendMessage()方法将消息发送出(注意这里没有指定call back function。)。
function sendMessage() {
    JavaChat.addMessage();
}

服务端JavaChat代码,调用DWRUtil,在客户端生成脚本,将消息输出到页面中。
//JavaChat.java
public void addMessage(String messsage){
    Util utilAll 
= new Util(sessions);
    utilAll.addScriptSessions(wctx.getScriptSessionsByPage(
"/chat.jsp"));
    utilAll.removeAllOptions("chatlog");        
    utilAll.addOptions(
"chatlog", message, "text");
}

posted on 2008-01-04 12:37 josson 阅读(1725) 评论(4)  编辑  收藏 所属分类: web开发


FeedBack:
# re: DWR Reverse 一些细节
2008-03-29 20:12 | jena
您好,我运行了下这个示例,但是当在文本框输入要发松的信息,要过一两分钟才能在屏幕上显示,反应特别迟钝,不知怎么回事  回复  更多评论
  
# re: DWR Reverse 一些细节[未登录]
2008-04-09 12:20 | josson
@jena
请注意, Tomcat 6或Jetty6才支持长连接, Jetty6还提供continuation, 另外注意DWR版本.  回复  更多评论
  
# re: DWR Reverse 一些细节
2008-06-28 22:37 | wangguochen
您好,客户端发送消息之后,服务端是知道有消息要发送到所有的客户端的?也就是在
"3、Server端通过ScriptSession,找到对到的client端JS方法"
中的utilAll.addOptions("chatlog", messages, "text"); 的messages是怎么得到的?  回复  更多评论
  
# re: DWR Reverse 一些细节[未登录]
2008-09-02 14:39 | Kim
我在开发中使用DWR Reverse,运行在JDK 1.5 & Jetty 6.*
1、在Firefox下面运行没有问题

2、在IE下面运行,使用http访问没有问题,但是用https就出现问题了:
server方面能够接收到页面发送的数据,但是server把数据推出去的时候,IE & https是不能够接收到的。

刚开始我怀疑是自己的工程有问题,于是新建立一个工程,照着教程来做.
结果还是一样。IE & https不能接收到任何数据。有高手能否帮忙调试下?
谢谢了!
问题补充:今天试了一下,用tomcat跑,一切正常。  回复  更多评论
  

只有注册用户登录后才能发表评论。


网站导航:
 
<2008年3月>
2425262728291
2345678
9101112131415
16171819202122
23242526272829
303112345

常用链接

留言簿(3)

随笔分类

随笔档案

收藏夹

搜索

  •  

最新评论

阅读排行榜

评论排行榜