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 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" 是一个包含DWR2.0测试应用的WAR(Web应用程序归档)文件,"dwr_dwr.w"可能是DWR配置或服务相关的文件。 首先,我们来了解一下DWR的核心概念: 1. **DWR引擎(DWR Engine)**:这是DWR的核心组件...
通过分析这个war文件,开发者可以学习如何配置DWR的XML配置文件(dwr.xml),以及如何创建可从JavaScript调用的Java方法。 3. **DWR2.0中文说明文档**: 这份文档对于理解DWR的工作原理和使用方法至关重要,特别是...
- **dwr.war**:这是一个DWR的部署文件,通常用于在Web服务器上快速部署DWR服务。开发者可以通过解压war文件查看源码,学习DWR的内部实现。 ### 实用案例 学习DWR时,实践是最好的老师。通过实际案例,可以理解DWR...
**DWR.xml** 是DWR的配置文件,用于定制DWR的行为和设置。在这个文件中,你可以定义哪些Java类和方法可以被浏览器访问,设置安全性限制,以及配置转换器和过滤器等。例如,通过`<allow>`标签,你可以指定允许...
3. **创建dwr.xml**: - 在`WEB-INF`目录下新建一个名为`dwr.xml`的文件,并添加以下内容: ```xml <!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 1.0//EN" ...
最新dwr3.0的包,有需要的朋友就下载吧
部署DWR JAR文件通常涉及到将它们添加到Web应用的类路径中,配置DWR的`dwr.xml`配置文件,以及在客户端HTML页面中引入相应的JavaScript库。对于Spring框架的集成,还需要配置Spring的bean定义。 总的来说,DWR的...
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**"这个压缩包中,包含了DWR框架不同版本的jar文件,以及一个可能的示例项目,便于用户学习和测试DWR的功能。 **DWR 2.0 和 3.0 的主要区别:** 1. **性能提升**:...
1、 导入dwr.jar包 2、 在web.xml中配置dwr,如下: <!-- 配置DWR --> <servlet-name>dwr-invoker org.directwebremoting.servlet.DwrServlet <init-param> <param-name>debug</param-name> ...
首先,DWR的核心是`dwr.xml`配置文件,它定义了哪些Java对象和方法可以被JavaScript调用。这个文件通常位于`WEB-INF`目录下,其中包含了对远程服务的定义,包括允许的类、方法和参数类型。例如: ```xml <!-- ...
dwr-1.1.3.jar及dwr.xml. dwr-1.1.3与dwr-2.0的dwr.xml略有区别: dwr-1.1.3 <!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 1.0//EN" ...
dwr20.dtd约束文件。 <!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 2.0//EN" "http://www.getahead.ltd.uk/dwr/dwr20.dtd" >
取得dwr的dwr.jar包和其他dwr所需的其他jar包 web.xml dwr.xml 任何一个dwr.xml的文件都需要包含DWR DOCTYPE的声明行,。。 有几个术语有必要理解,参数叫做converted,远程Bean叫做created.如果远程Bean A有个方法A....
标题中的"dwr.jar"是DWR的主要库文件,包含了所有必要的Java类和接口,用于在服务器端实现DWR的功能。这个JAR文件通常会被部署到应用服务器的类路径中,以便服务端代码可以访问和使用DWR的API。 "engine.js"是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
这个"**dwr.rar**"压缩包包含了DWR的核心组件,即**dwr.jar**文件,它是DWR运行所必需的。DWR的主要目的是简化AJAX(异步JavaScript和XML)开发,通过提供一种方式,使得前端JavaScript可以直接调用后端Java方法,...
为了使用这些文件,你需要将它们部署到你的Web应用服务器中,通常将jar包放入WEB-INF/lib目录,而web.xml和dwr.xml则放入WEB-INF下。然后,在你的HTML或JavaScript代码中引入engine.js和util.js,通过它们提供的API...