`
gdzbgg0931
  • 浏览: 1402 次
  • 性别: Icon_minigender_1
  • 来自: 广州
最近访客 更多访客>>
社区版块
存档分类
最新评论

学习了dwr+参考,写的一个Extjs做前端的在线聊天系统

    博客分类:
  • DWR
DWR 
阅读更多

 

        前些时间学习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

    总结起来,"DWR+extjs+spring+hibernate"的组合是现代Web应用开发的一个强大工具集,它能够帮助开发者快速构建出交互性强、性能优异的企业级应用。通过深入理解和熟练掌握这四个技术,可以显著提升开发者的技能水平...

    DWR+Struts+spring+hibernate的订货系统

    DWR+Struts+spring+hibernate的订货系统,自己添加的dwr功能

    这是一个用Extjs写的前端在线聊天模块,基于DWR实现!

    在给定的项目中,“这是一个用Extjs写的前端在线聊天模块”,我们可以推测这个聊天工具利用了ExtJS的组件化特性,创建了用户界面,如输入框、聊天窗口、联系人列表等。ExtJS的可扩展性和灵活性使得开发者能够创建...

    AJAX学习资料(DWR+ExtJS)

    ExtJS是一个丰富的JavaScript库,它提供了一系列组件和工具,用于构建复杂的、用户友好的Web应用程序。"ExtJS学习"文件夹可能包含各种教程、示例代码和实践项目,帮助开发者熟悉ExtJS的组件模型、布局管理、数据绑定...

    spring+dwr+Extjs+sql2008的数组传递grid

    标题中的“spring+dwr+Extjs+sql2008的数组传递grid”是指一个集成应用,使用了Spring框架、Direct Web Remoting (DWR)技术、ExtJS前端框架以及SQL Server 2008数据库,实现了从后端服务器向前端Grid组件传递数据的...

    疯狂Ajax讲义:Prototype/jQuery+DWR+Spring+Hibernate整合开发(part01)

    第二部分详细介绍了Prototype、jQuery、DWR、AjaxTags等四个最常用的Ajax框架的用法,并针对每个框架提供了一个实用案例。这两个部分是笔者在“疯狂Java实训营”的培训讲义,是《疯狂Ajax讲义:Prototype/jQuery+DWR+...

    SSH+Dwr+Ajax框架实现的OA办公自动化系统

    SSH+Dwr+Ajax框架是构建现代Web应用的一种高效组合,尤其在OA(Office Automation)办公自动化系统中,它们能够实现高效的数据交互和用户界面的动态更新。下面将详细讲解这三个关键技术及其在OA系统中的应用。 **...

    dwr+spring的聊天系统

    总之,DWR+Spring的聊天系统是一个理想的实践项目,有助于开发者深入理解Web实时通信、前端与后端交互以及Spring框架的综合应用。通过学习和研究此类项目,可以提升在Web开发领域的技能和经验。

    Spring+Dwr+Hibernate整合项目

    本项目整合了这三个技术,旨在提供一个高效、灵活且易于维护的后端系统。接下来,我们将详细讨论这些技术以及它们在整合中的应用。 **Spring框架** Spring是一个全面的Java企业级应用开发框架,它提供了一个轻量级...

    s2sh+dwr+extjs基于annoation三个项目实战

    在本项目实战中,我们将深入探讨如何利用"Spring 2.5 + Struts 2 + Hibernate (S2SH)"框架,结合Direct Web Remoting (DWR) 和ExtJS技术,来构建一个基于注解(Annotation)的高效Web应用程序。这个实战涵盖了三个...

    Extjs+数据库+dwr+案例+xml

    ExtJS 是一个强大的JavaScript前端框架,用于构建富客户端应用程序。它提供了一系列的组件,包括网格(Grid)、表单(Form)、树形结构(Tree)等,使得开发者可以创建功能丰富的、用户界面友好的Web应用。在与...

    DWR+jquery2.x+easyUI1.3.x开发富客户端应用

    ### DWR+jquery2.x+easyUI1.3.x开发富客户端应用 #### 知识点一:技术栈概述 本篇文章将介绍一种基于DWR、jquery2.x以及easyUI1.3.x的技术栈来构建富客户端应用的方法。该技术栈还包括了Struts2.x、Spring3.x等...

    dwr+hibernate实现的分页技术

    ### dwr+hibernate实现的分页技术详解 在当今快速发展的互联网环境中,网站和应用程序需要处理大量的数据。为了提高用户体验并优化服务器资源利用,分页技术成为了必不可少的一部分。本文将详细介绍如何通过结合dwr...

    用户注册和登录是每个系统的必须存在的一部分,基于Dwr+Struts2+Spring+Hibernate写了一个用户登录注册系统

    用户注册和登录是每个系统的必须存在的一部分,基于Dwr+Struts2+Spring+Hibernate写了一个用户登录注册系统。  其中用Dwr去进行用户注册的用户是否存在的验证。  全部业务控制交由Spring去进行处理。事务处理也...

    Spring+DWR+ibatis+jQuery+easyUI的框架例子

    Spring+DWR+ibatis+jQuery+easyUI的框架例子. 完全开放源代码,免费学习与使用。 可以完成基本的后台主界面,报表查询,数据查询,增加,修改等功能。 如果你要做一些报表,后台功能利用这个a框架就可以很方便实现。

    源码分享-ibatis+dwr+jQuery

    【标题】"源码分享-ibatis+dwr+jQuery"是一个关于使用这三种技术构建的简单商城系统的源码集合。Ibatis、Direct Web Remoting (DWR) 和 jQuery 是Web开发中的关键组件,它们共同作用于提升应用程序的性能和用户体验...

    dwr+spring+hibernate模板.zip

    《DWR+Spring+Hibernate整合应用详解》 在IT领域,DWR(Direct Web Remoting)、Spring和Hibernate是三个至关重要的技术组件,它们分别在Web应用程序的远程调用、依赖注入和对象关系映射方面发挥着核心作用。将这三...

    extjs_dwr整合例子

    本压缩包文件"Extjs+Dwr"提供了一个整合ExtJS和DWR的例子,让我们来详细探讨一下这两个技术以及它们的整合过程。 **ExtJS** 是一个JavaScript库,主要用于构建桌面级的Web应用。它提供了一套完整的UI组件,包括数据...

    ExtJs+ Dwr 页面登入功能

    本项目将讲解如何使用ExtJs(一个强大的JavaScript框架)结合DWR(Direct Web Remoting,一种允许JavaScript与Java后端进行实时通信的技术)来实现页面的登录功能。通过这种方式,我们可以创建一个高效、用户友好的...

    web开发实例(DWR+Struts2)

    【标题】"Web开发实例(DWR+Struts2)"揭示了一个综合性的Web应用程序开发案例,其中结合了Direct Web Remoting (DWR) 和Struts2框架。DWR是一种JavaScript库,它允许在浏览器和服务器之间进行实时、异步的通信,从而...

Global site tag (gtag.js) - Google Analytics