lipeng88213 发表于 2013-2-6 08:06:03

2010.04.09(3)———dwr群聊

2010.04.09(3)———dwr群聊


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>    <!-- 以设置下格式固定,可复制使用 -->      <display-name>ajaxDWR</display-name>      <servlet>          <servlet-name>dwr-invoker</servlet-name>         <servlet-class>            org.directwebremoting.servlet.DwrServlet         </servlet-class>          <init-param>            <description>实现调试,在debug请设置为false</description>            <param-name>debug</param-name>            <param-value>true</param-value>          </init-param>          <init-param>            <description>使用服务器推技术(反转AJAX)</description>            <param-name>activeReverseAjaxEnabled</param-name>            <param-value>true</param-value>          </init-param>          <init-param>            <param-name>                  initApplicationScopeCreatorsAtStartup               </param-name>            <param-value>true</param-value>          </init-param>          <init-param>            <param-name>maxWaitAfterWrite</param-name>            <param-value>100</param-value>          </init-param>          <load-on-startup>4</load-on-startup>      </servlet>      <servlet-mapping>          <servlet-name>dwr-invoker</servlet-name>          <url-pattern>/dwr/*</url-pattern>      </servlet-mapping>    </web-app>

java

package dwr;import java.util.ArrayList;   import java.util.Collection;   import javax.servlet.ServletContext;   import javax.servlet.http.HttpServletRequest;   import org.directwebremoting.ServerContext;   import org.directwebremoting.ServerContextFactory;   import org.directwebremoting.proxy.dwr.Util; public class Chat {       static ArrayList<String> name_list = new ArrayList<String>();       static StringBuffer show_message = new StringBuffer();          public String addUser(String name,HttpServletRequest request) {         System.out.println("list.size() = "+name_list.size());         for (String s : name_list) {               if (name == null || name.trim().equals(s)) {                   return "用户名已存在";               }             }         name_list.add(name.trim());                ServletContext sc = request.getSession().getServletContext();      //获得DWR上下文         ServerContext sctx = ServerContextFactory.get(sc);         //获得当前浏览 某页面 已开启的所有脚本session      //页面地址,以工程同目录真实地址为准,如:/部署名/pages/index.jsp         Collection sessions = sctx.getScriptSessionsByPage("/chat/index.jsp");         Util util = new Util(sessions);         show_message.append("\n欢迎"+name+"来到 XXX Chat");         trimMessage();         util.setValue("showmessage", show_message.toString());         printUserList(util);         return "";       }            public void sayMessage(String message,HttpServletRequest request){         ServletContext sc = request.getSession().getServletContext();         ServerContext sctx = ServerContextFactory.get(sc);         Collection sessions = sctx.getScriptSessionsByPage("/chat/index.jsp");         Util util = new Util(sessions);         show_message.append("\n"+message);         trimMessage();         util.setValue("showmessage", show_message.toString());         printUserList(util);       }            public void trimMessage(){         if(show_message.length() > 2000){               show_message.delete(0, ((show_message.length() - 2000)*2+2));         }       }            public void printUserList(Util util){         StringBuffer userlist = new StringBuffer();         userlist.append("<table>");         for(String s : name_list){               userlist.append("<tr><td><font color='blue'>"+s+"</font></td></tr>");         }         userlist.append("</table>");         util.setValue("userlist", userlist.toString());       }   }

dwr.xml

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 2.0//EN" "http://www.getahead.ltd.uk/dwr/dwr20.dtd"><dwr>      <!-- 对后台类的配置格式确定 -->      <allow>                  <create creator="new" javascript="Chat">            <param name="class" value="dwr.Chat" />          </create>      </allow></dwr>

jsp

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html>      <head>          <title>群聊</title>            <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">          <meta http-equiv="description" content="this is my page">          <meta http-equiv="content-type" content="text/html; charset=UTF-8">          <script type='text/javascript' src='dwr/util.js'></script>          <script type='text/javascript' src='dwr/engine.js'></script>          <script type='text/javascript' src='dwr/interface/Chat.js'></script>          <!--<link rel="stylesheet" type="text/css" href="./styles.css">-->      </head>      <body>          <center>            <table width="600px" border="1">                  <tr>                      <td colspan="3" align="center">                        XXXXXX Chat                     </td>                      <td>                        User List                     </td>                  </tr>                  <tr>                      <td colspan="3" style="height: 300px">                        <textarea rows="20" cols="60" readonly="readonly" id="showmessage" name="showmessage"></textarea>                      </td>                      <td style="height: 300px"valign="top">                        <div id="userlist" style="height:310px;overflow : scroll;"></div>                      </td>                  </tr>                  <tr>                      <td colspan="3" align="center">                        <span id="say_name" ></span>                        <textarea rows="3" cols="50" id="say_message" name="say_message" ></textarea><input type="button" value="say" id="say" />                      </td>                      <td>                        先录入你的昵称<br/>                        <input type="text" style="width: 125px" name="name" id="name" />                        <input type="button" value="确定"/>                      </td>                  </tr>            </table>          </center>      </body>      <script type="text/javascript">          dwr.engine.setActiveReverseAjax(true); // 激活反转 重要                      init();                      function init(){               document.getElementById('say_message').disabled = true;               document.getElementById('say').disabled = true;         }                      function sayMessage(){               var message_content = DWRUtil.getValue('say_message');               var message_head = document.getElementById('say_name').innerHTML;               Chat.sayMessage(message_head+message_content);               document.getElementById('say_message').value = '';         }                      function register() {               var name = DWRUtil.getValue("name");               Chat.addUser(name,callback);         }                      function callback(str) {               if(str != ''){                   alert(str);               }else{                   document.getElementById('say_name').innerHTML = DWRUtil.getValue("name") + " 说:";                   document.getElementById('say_message').disabled = false;                   document.getElementById('say').disabled = false;               }            }       </script></html>
页: [1]
查看完整版本: 2010.04.09(3)———dwr群聊