dwr3.0 反推

      dwr3.0中采用的是线程阻塞的方式实现的。下面的是其实现方式。

      首先加入dwr3.0的支持包。

 

      后台模拟聊天的Message   Message.java

 

package com.fendou;

public class Message {

 public Message(String newtext) {
  id = System.currentTimeMillis();
  text = newtext;
  if (text.length() > 256)
   text = text.substring(0, 256);
 }

 public long getId() {
  return id;
 }

 public String getText() {
  return text;
 }

 private long id;
 private String text;
}

 

 

    后台模拟聊天实现类  JavaChat.java

   

package com.fendou;

import java.util.LinkedList;

import org.directwebremoting.Browser;
import org.directwebremoting.ScriptSessions;
import org.directwebremoting.ServerContextFactory;
import org.directwebremoting.ui.dwr.Util;

public class JavaChat {

 

//模拟添加消息的方法
  public void addMessage(String text) {
 
    if (text != null && text.trim().length() > 0) {
   messages.addFirst(new Message(text));
   while (messages.size() > 10) {
    messages.removeLast();
   }
  }
  
  Util.setValue("text", "");

  String page = ServerContextFactory.get().getContextPath() + "/test.jsp";
    //
通过Brower对象来操作

    Browser.withPage(page, new Runnable() {
         public void run() {      

         Util.removeAllOptions("chatlog");
         Util.addOptions("chatlog", messages, "text");
   }
  });
 }

 private final LinkedList<Message> messages = new LinkedList<Message>();
}

 

 

web.xml文件

 

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
 http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
 <welcome-file-list>
  <welcome-file>index.jsp</welcome-file>
 </welcome-file-list>

 <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>

  <init-param>
   <param-name>debug</param-name>
   <param-value>true</param-value>
  </init-param>
  <load-on-startup>1</load-on-startup>

 </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" scope="application">
   <param name="class" value="com.fendou.JavaChat" />
  </create>
  <convert converter="bean" match="com.fendou.Message" />
 </allow>
</dwr>

 

test.jsp文件

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
 <head>
  <meta http-equiv="Content-Type"
   content="text/html; charset=utf-8" />
  <title>DWR Thin Chat Version 2.0</title>
  <script type='text/javascript'
   src='/ReverseAjax/dwr/interface/JavaChat.js'></script>
  <script type='text/javascript' src='/ReverseAjax/dwr/engine.js'></script>
  <script type='text/javascript' src='/ReverseAjax/dwr/util.js'></script>

  <script type="text/javascript">
    function sendMessage() {
      JavaChat.addMessage(dwr.util.getValue("text"));
    }
  </script>

 </head>

 <body οnlοad="dwr.engine.setActiveReverseAjax(true); ">
  <h1>
   Java Chat
  </h1>
  <div id="tabContents">

   <div id="demoDiv">
    <p>
     Your Message:
     <input id="text" οnkeypress="dwr.util.onReturn(event, sendMessage)" />
     <input type="button" value="Send" οnclick="sendMessage()" />
    </p>
    <hr />
    <ul id="chatlog" style="list-style-type: none;">
    </ul>
   </div>
  </div>
 </body>
</html>

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值