`

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" onclick="sayMessage()"/>  
                    </td>  
                    <td>  
                        先录入你的昵称<br/>  
                        <input type="text" style="width: 125px" name="name" id="name" />  
                        <input type="button" value="确定" onclick="register()" />  
                    </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> 



分享到:
评论

相关推荐

    dwr包.rar dwr.jar engine.js util.js dwr-noncla.jar readme.txt

    dwr包.rar dwr.jar engine.js util.js dwr-noncla.jar readme.txt JAR File: dwr.jar (1.08Mb) To DWR enable your web-app WAR File: dwr.war (4.62Mb) Demos/Examples of what DWR can do Sources: dwr-...

    dwrDemo.war.zip_dwr_dwr.w

    "dwrDemo.war.zip" 是一个包含DWR2.0测试应用的WAR(Web应用程序归档)文件,"dwr_dwr.w"可能是DWR配置或服务相关的文件。 首先,我们来了解一下DWR的核心概念: 1. **DWR引擎(DWR Engine)**:这是DWR的核心组件...

    DWR3.0.jar、DWR.war和DWR2.0中文说明文档

    通过分析这个war文件,开发者可以学习如何配置DWR的XML配置文件(dwr.xml),以及如何创建可从JavaScript调用的Java方法。 3. **DWR2.0中文说明文档**: 这份文档对于理解DWR的工作原理和使用方法至关重要,特别是...

    Ajax学习——DWR的参考书和实用案例学习总结

    - **dwr.war**:这是一个DWR的部署文件,通常用于在Web服务器上快速部署DWR服务。开发者可以通过解压war文件查看源码,学习DWR的内部实现。 ### 实用案例 学习DWR时,实践是最好的老师。通过实际案例,可以理解DWR...

    DWR2.jar + DWR.xml + DWR2.0.dtd + Web.xml

    **DWR.xml** 是DWR的配置文件,用于定制DWR的行为和设置。在这个文件中,你可以定义哪些Java类和方法可以被浏览器访问,设置安全性限制,以及配置转换器和过滤器等。例如,通过`&lt;allow&gt;`标签,你可以指定允许...

    JavaScript调用java方法——dwr步骤.docx

    3. **创建dwr.xml**: - 在`WEB-INF`目录下新建一个名为`dwr.xml`的文件,并添加以下内容: ```xml &lt;!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 1.0//EN" ...

    dwr-3.0.jar

    最新dwr3.0的包,有需要的朋友就下载吧

    dwr2.0.5.jar&dwr2.0.6.jar&dwr3.rc1.jar

    部署DWR JAR文件通常涉及到将它们添加到Web应用的类路径中,配置DWR的`dwr.xml`配置文件,以及在客户端HTML页面中引入相应的JavaScript库。对于Spring框架的集成,还需要配置Spring的bean定义。 总的来说,DWR的...

    JavaEE源代码 dwr.jar 2.0

    JavaEE源代码 dwr.jar 2.0JavaEE源代码 dwr.jar 2.0JavaEE源代码 dwr.jar 2.0JavaEE源代码 dwr.jar 2.0JavaEE源代码 dwr.jar 2.0JavaEE源代码 dwr.jar 2.0JavaEE源代码 dwr.jar 2.0JavaEE源代码 dwr.jar 2.0JavaEE源...

    dwrTest.rar_dwr 3 jar_dwr jar_dwr2.0 jar

    在"**dwrTest.rar_dwr 3.jar_dwr.jar_dwr2.0.jar**"这个压缩包中,包含了DWR框架不同版本的jar文件,以及一个可能的示例项目,便于用户学习和测试DWR的功能。 **DWR 2.0 和 3.0 的主要区别:** 1. **性能提升**:...

    dwr源码包,dwr.jar包下载

    1、 导入dwr.jar包 2、 在web.xml中配置dwr,如下: &lt;!-- 配置DWR --&gt; &lt;servlet-name&gt;dwr-invoker org.directwebremoting.servlet.DwrServlet &lt;init-param&gt; &lt;param-name&gt;debug&lt;/param-name&gt; ...

    J2EE——Ajax——dwr——配置文件

    首先,DWR的核心是`dwr.xml`配置文件,它定义了哪些Java对象和方法可以被JavaScript调用。这个文件通常位于`WEB-INF`目录下,其中包含了对远程服务的定义,包括允许的类、方法和参数类型。例如: ```xml &lt;!-- ...

    dwr-1.13.jar及dwr.xml

    dwr-1.1.3.jar及dwr.xml. dwr-1.1.3与dwr-2.0的dwr.xml略有区别: dwr-1.1.3 &lt;!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 1.0//EN" ...

    dwr20.dtd约束文件

    dwr20.dtd约束文件。 &lt;!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 2.0//EN" "http://www.getahead.ltd.uk/dwr/dwr20.dtd" &gt;

    DWR,web.xml,dwr.xml,converted,created

    取得dwr的dwr.jar包和其他dwr所需的其他jar包 web.xml dwr.xml 任何一个dwr.xml的文件都需要包含DWR DOCTYPE的声明行,。。 有几个术语有必要理解,参数叫做converted,远程Bean叫做created.如果远程Bean A有个方法A....

    dwr.jar engine.js util.js,Dwr相关

    标题中的"dwr.jar"是DWR的主要库文件,包含了所有必要的Java类和接口,用于在服务器端实现DWR的功能。这个JAR文件通常会被部署到应用服务器的类路径中,以便服务端代码可以访问和使用DWR的API。 "engine.js"是DWR的...

    DWR学习资料

    DWR学习资料 :DWR 3.0 上传文件.txt DWR3.0反向Ajax示例.txt DWR3.0...多人聊天室.doc 反向Ajax技术实例.txt 基于DWR反向AJAX的Web监控系统.doc 深入学习DWR3.0.txt 实战dwr.doc 使用Jetty和DWR创建伸缩性Comet程序.txt

    dwr20.dtd

    dwr20.dtd

    dwr.rar_dwr jar_dwr j_dwr jar_dwr.j_dwr.jar2

    这个"**dwr.rar**"压缩包包含了DWR的核心组件,即**dwr.jar**文件,它是DWR运行所必需的。DWR的主要目的是简化AJAX(异步JavaScript和XML)开发,通过提供一种方式,使得前端JavaScript可以直接调用后端Java方法,...

    dwr所需的jar包及配置

    为了使用这些文件,你需要将它们部署到你的Web应用服务器中,通常将jar包放入WEB-INF/lib目录,而web.xml和dwr.xml则放入WEB-INF下。然后,在你的HTML或JavaScript代码中引入engine.js和util.js,通过它们提供的API...

Global site tag (gtag.js) - Google Analytics