前些时间学习dwr,参考被人,自己做了一个在线一对一的网络聊天程序,程序界面使用Extjs,后台使用了struts2,hibernate3,数据库mysql。
分享下,望评点。
主要代码:
package com.webca.actions;
import java.util.Collection;
import java.util.Date;
import java.util.HashSet;
import java.util.Iterator;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import org.directwebremoting.ScriptSession;
import org.directwebremoting.ServerContext;
import org.directwebremoting.ServerContextFactory;
import org.directwebremoting.WebContextFactory;
import org.directwebremoting.proxy.dwr.Util;
import com.webca.dao.Message;
public class ChatManager {
public String updateUsersList(String username, HttpServletRequest request) {
WebContextFactory.get().getScriptSession()
.setAttribute("username", username);
System.out.println("****新用户登录:"+username+" 用户ScriptSession: "+WebContextFactory.get().getScriptSession().getId());
ServletContext sc = request.getSession().getServletContext();
ServerContext sctx = ServerContextFactory.get(sc);
// 获得当前浏览 main.jsp 页面的所有脚本session
Collection sessions = sctx.getScriptSessionsByPage("/webca/main.jsp");
ScriptSession updateSS=null;
Iterator it=sessions.iterator();
for(int i=0;it.hasNext();i++){
updateSS=(ScriptSession) it.next();
System.out.println(i+"、****在线用户:"+updateSS.getAttribute("username")+"用户ScriptSession: "+updateSS.getId());
}
Util util = new Util(sessions);
util.addFunctionCall("reloadTree");
return "";
}
/**
* 发送消息
*
* @param sender 发送者
* @param receiver 接收者
* @param text 消息内容
* @param request
*/
public String send(String sender, String receiver, String text,
HttpServletRequest request) {
if (text != null) {
Message msg = new Message();
msg.setDate(new Date());
msg.setSender(sender);
msg.setText(text);
Collection<ScriptSession> sessions = new HashSet<ScriptSession>();
sessions.addAll(ServerContextFactory.get(
request.getSession().getServletContext())
.getScriptSessionsByPage("/webca/main.jsp"));
for (ScriptSession session : sessions) {
String xusername = (String) session.getAttribute("username");
if (xusername != null && xusername.equals(receiver)) {
System.out.println("==>单人聊天: 发送用户: "+xusername+"****ScriptSession: "+session.getId());
Util fromutil = new Util(session);
fromutil.addFunctionCall("receiveMessages", msg);
} else if (xusername != null && xusername.equals(sender)) {
System.out.println("==>单人聊天:接收用户: "+xusername+"****ScriptSession: "+session.getId());
Util toutil = new Util(session);
toutil.addFunctionCall("receiveMessages", msg);
}
}
System.out.println("==>单人聊天:"+sender+" 向 "+receiver+" 发送信息: "+text);
}
return "";
}
}
本程序可以实现一对一聊天,在同一台电脑上的两个浏览器可以,在局域网的两台电脑也可以,不过有时发送消息会出现问题,不知道是浏览器兼容性的问题,还是代码有些错误,请赐教。。。
界面图片:
- 大小: 118.8 KB
- 大小: 12.8 KB
- 大小: 13.9 KB
- 大小: 21.5 KB
- 大小: 18.1 KB
分享到:
相关推荐
总结起来,"DWR+extjs+spring+hibernate"的组合是现代Web应用开发的一个强大工具集,它能够帮助开发者快速构建出交互性强、性能优异的企业级应用。通过深入理解和熟练掌握这四个技术,可以显著提升开发者的技能水平...
DWR+Struts+spring+hibernate的订货系统,自己添加的dwr功能
在给定的项目中,“这是一个用Extjs写的前端在线聊天模块”,我们可以推测这个聊天工具利用了ExtJS的组件化特性,创建了用户界面,如输入框、聊天窗口、联系人列表等。ExtJS的可扩展性和灵活性使得开发者能够创建...
ExtJS是一个丰富的JavaScript库,它提供了一系列组件和工具,用于构建复杂的、用户友好的Web应用程序。"ExtJS学习"文件夹可能包含各种教程、示例代码和实践项目,帮助开发者熟悉ExtJS的组件模型、布局管理、数据绑定...
标题中的“spring+dwr+Extjs+sql2008的数组传递grid”是指一个集成应用,使用了Spring框架、Direct Web Remoting (DWR)技术、ExtJS前端框架以及SQL Server 2008数据库,实现了从后端服务器向前端Grid组件传递数据的...
第二部分详细介绍了Prototype、jQuery、DWR、AjaxTags等四个最常用的Ajax框架的用法,并针对每个框架提供了一个实用案例。这两个部分是笔者在“疯狂Java实训营”的培训讲义,是《疯狂Ajax讲义:Prototype/jQuery+DWR+...
SSH+Dwr+Ajax框架是构建现代Web应用的一种高效组合,尤其在OA(Office Automation)办公自动化系统中,它们能够实现高效的数据交互和用户界面的动态更新。下面将详细讲解这三个关键技术及其在OA系统中的应用。 **...
总之,DWR+Spring的聊天系统是一个理想的实践项目,有助于开发者深入理解Web实时通信、前端与后端交互以及Spring框架的综合应用。通过学习和研究此类项目,可以提升在Web开发领域的技能和经验。
本项目整合了这三个技术,旨在提供一个高效、灵活且易于维护的后端系统。接下来,我们将详细讨论这些技术以及它们在整合中的应用。 **Spring框架** Spring是一个全面的Java企业级应用开发框架,它提供了一个轻量级...
在本项目实战中,我们将深入探讨如何利用"Spring 2.5 + Struts 2 + Hibernate (S2SH)"框架,结合Direct Web Remoting (DWR) 和ExtJS技术,来构建一个基于注解(Annotation)的高效Web应用程序。这个实战涵盖了三个...
ExtJS 是一个强大的JavaScript前端框架,用于构建富客户端应用程序。它提供了一系列的组件,包括网格(Grid)、表单(Form)、树形结构(Tree)等,使得开发者可以创建功能丰富的、用户界面友好的Web应用。在与...
### DWR+jquery2.x+easyUI1.3.x开发富客户端应用 #### 知识点一:技术栈概述 本篇文章将介绍一种基于DWR、jquery2.x以及easyUI1.3.x的技术栈来构建富客户端应用的方法。该技术栈还包括了Struts2.x、Spring3.x等...
### dwr+hibernate实现的分页技术详解 在当今快速发展的互联网环境中,网站和应用程序需要处理大量的数据。为了提高用户体验并优化服务器资源利用,分页技术成为了必不可少的一部分。本文将详细介绍如何通过结合dwr...
用户注册和登录是每个系统的必须存在的一部分,基于Dwr+Struts2+Spring+Hibernate写了一个用户登录注册系统。 其中用Dwr去进行用户注册的用户是否存在的验证。 全部业务控制交由Spring去进行处理。事务处理也...
Spring+DWR+ibatis+jQuery+easyUI的框架例子. 完全开放源代码,免费学习与使用。 可以完成基本的后台主界面,报表查询,数据查询,增加,修改等功能。 如果你要做一些报表,后台功能利用这个a框架就可以很方便实现。
【标题】"源码分享-ibatis+dwr+jQuery"是一个关于使用这三种技术构建的简单商城系统的源码集合。Ibatis、Direct Web Remoting (DWR) 和 jQuery 是Web开发中的关键组件,它们共同作用于提升应用程序的性能和用户体验...
《DWR+Spring+Hibernate整合应用详解》 在IT领域,DWR(Direct Web Remoting)、Spring和Hibernate是三个至关重要的技术组件,它们分别在Web应用程序的远程调用、依赖注入和对象关系映射方面发挥着核心作用。将这三...
本压缩包文件"Extjs+Dwr"提供了一个整合ExtJS和DWR的例子,让我们来详细探讨一下这两个技术以及它们的整合过程。 **ExtJS** 是一个JavaScript库,主要用于构建桌面级的Web应用。它提供了一套完整的UI组件,包括数据...
本项目将讲解如何使用ExtJs(一个强大的JavaScript框架)结合DWR(Direct Web Remoting,一种允许JavaScript与Java后端进行实时通信的技术)来实现页面的登录功能。通过这种方式,我们可以创建一个高效、用户友好的...
【标题】"Web开发实例(DWR+Struts2)"揭示了一个综合性的Web应用程序开发案例,其中结合了Direct Web Remoting (DWR) 和Struts2框架。DWR是一种JavaScript库,它允许在浏览器和服务器之间进行实时、异步的通信,从而...