一:聊天业务类 主要业务 源代码如下:
public class ChatDwr {
public ChatDwr()
{ System.out.println("实例化");
}
// sessionId和User对象
public static Map<string user> map = new HashMap<string user>();
// 登陆
public boolean login(String username) {
// session HttpSession session = WebContextFactory.get().getSession();
// 键同,值不同(注销,put)
// 键不同,值同(则在别处登陆,提示)
// 键不同,值不同(新用户,put) //activeReverseAjaxEnable
for (Entry<string user> user : map.entrySet()) {
String sid = user.getKey();
String name = user.getValue().getName();
if (name.equalsIgnoreCase(username) && !sid.equals(session.getId()))
return true;
//在别处登陆
else if (username.equals("") && sid.equals(session.getId())) { map.remove(sid);
break;
}
}
// 保存用户
ScriptSession ss = WebContextFactory.get().getScriptSession();
if (username.length() > 0) {
map.put(session.getId(), new User
(ss.getId(),username)); ss.setAttribute("username", username);
}
// 添加数据到用户列表
Browser.withAllSessions(new Runnable() {
public void run() {
ScriptSessions.addFunctionCall("addUser", map.values());
}
});
session.setAttribute("username", username); return false;
}
// 发送消息
public boolean sendMsg( final String toId, final String toName, final String msg)
{ final HttpSession session = WebContextFactory.get().getSession(); final String from = (String) session.getAttribute("username");
if (from==null || from.equals(toName)) return false;
Browser.withSession(toId, new Runnable() {
public void run() { ScriptBuffer buff = new ScriptBuffer(); buff.appendCall("recv", from, toName, msg, new Date());
ScriptSession ss = Browser.getTargetSessions().iterator() .next(); ss.addScript(buff); }
});
return true; }
聊天业控制类 源代码如下:
public class ExitGameServlet extends HttpServlet {
public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
final HttpSession session = request.getSession(false);
if (session != null) { Browser.withAllSessions(new Runnable() { public void run() {
// Collection<scriptsession> cs =
// ServerContextFactory.get(getServletContext()).getAllScriptSessions();
// for (ScriptSession cc : cs) {
// String username = (String)cc.getAttribute("username");
// if (username==null) // cc.invalidate();
// }
// System.out.println(cs); System.out.println("来了"); ChatDwr.map.remove(session.getId()); session.invalidate(); ScriptSessions.addFunctionCall("addUser", ChatDwr.map .values()); } });
}
}
}
聊天vo类 源代码如下:
package com.vo; public class User {
private String id; //scriptSessionId private String name;
private String sid; //sessionId
public String getId() { return id; }
public void setId(String id) { this.id = id; }
public String getName() { return name; } public void setName(String name) { this.name = name; } public User(S
tring id, String name) { super(); this.id = id; this.name = name; } public User() { super(); // TODO Auto-generated constructor stub } public String getSid() { return sid; }
public void setSid(String sid) { this.sid = sid; }
public User(String id, String name, String sid) { super(); this.id = id; this.name = name; this.sid = sid; }
}
分享到:
相关推荐
综上所述,这个项目展示了一个基于DWR的实时聊天系统实现,它利用了J2EE的稳定性、DWR的双向通信能力、Servlet的请求处理功能以及JavaScript的客户端交互性,创建了一个无需数据库支持的高效聊天应用。用户可以进行...
在本项目"**DWR操作数据库模拟实现Google搜索效果**"中,我们将探讨如何利用DWR技术来创建一个类似Google搜索的体验。这个项目的核心目标是通过用户在前端输入关键词,实时从后台数据库中检索匹配的信息,并在页面上...
本示例主要展示了如何使用纯JSP和Direct Web Remoting (DWR)技术来构建一个功能丰富的用户界面,其中包括三级联动下拉选择菜单、无刷新联动、用户存在性判断以及模拟Google搜索效果的功能。DWR是一种JavaScript库,...
实现聊天功能,首先我们需要配置Spring3的环境,包括创建Spring配置文件,定义Bean来封装业务逻辑和服务接口。例如,我们可以创建一个`ChatService`接口和其实现类,处理发送和接收消息的业务逻辑,使用Spring的`@...
在这个在线即时聊天系统中,DWR被用来创建一个高效、用户友好的通信层,使得客户端(通常是浏览器中的JavaScript)能够直接调用服务器端的Java方法,就像它们是本地函数一样。这种技术极大地简化了AJAX...
Spring框架和Direct Web Remoting (DWR) 是构建Web应用程序的强大组合,尤其适用于实现动态、实时的交互功能,如无刷新聊天室。这个项目展示了如何利用这两个技术来创建一个无需刷新页面就能进行实时通信的聊天应用...
Java+dwr框架实现聊天室是使用Java语言和dwr框架实现的服务器推技术,实现了实时通信的聊天室功能。下面将详细介绍该技术的实现过程和相关知识点。 一、dwr 框架简介 dwr(Direct Web Remoting)是一种基于Ajax...
- **Chat2.java**: 这是服务器端的Java类,实现了处理聊天室逻辑的业务方法,如接收和发送消息,以及管理在线用户列表。 - **dwr.xml**: 这是DWR的配置文件,定义了哪些Java方法可以被客户端调用,以及相关的安全...
DWR(Direct Web Remoting)是一个...通过以上步骤,我们可以利用DWR和JSP实现一个高效、无刷新的分页功能,为用户提供更加流畅的浏览体验。在实际开发中,还需要结合具体的业务需求和项目架构进行适当的调整和优化。
在DWR中,可以使用Comet技术来实现聊天系统的实时推送功能,使用户在接收到新消息时无需刷新页面。 5. **群聊实现**: 在这个项目中,开发者使用DWR构建了一个支持多用户参与的聊天系统。每个用户都能即时看到其他...
DWR 在线即时聊天系统,实现了对指定用户发送消息,和即时显示功能.rarDWR 在线即时聊天系统,实现了对指定用户发送消息,和即时显示功能.rarDWR 在线即时聊天系统,实现了对指定用户发送消息,和即时显示功能.rarDWR 在线...
【基于DWR推送的Web聊天系统】是一种利用Direct Web Remoting (DWR) 技术构建的实时交互式在线聊天应用。DWR是一款开源的Java库,它允许JavaScript在浏览器端与服务器端的Java对象进行直接通信,实现了AJAX(异步...
例如,在一个用户查询操作的场景中,JSP页面可能使用DWR来触发一个Java方法,这个方法利用数据库缓存池获取连接,执行SQL查询,然后将结果返回给DWR,最终DWR将查询结果展示在前端页面上。在这个过程中,DWR保证了...
**DWR(Direct Web Remoting)框架是一种在Web应用程序中实现AJAX(Asynchronous JavaScript and XML)技术的工具,它允许JavaScript与服务器端的Java代码进行实时交互,从而创建更动态、更响应式的用户界面。...
`ajax登录`可能是一个实际的DWR应用示例,展示如何实现无刷新的登录功能。`dwrdemo`可能是一个完整的DWR演示项目,包含运行示例的源代码。`dwr需要用的jar`是DWR运行所需的库文件。`Ajax无刷新页的业务逻辑实现`可能...
在数据库操作中,DWR可以帮助开发者实现实时的数据查询、插入、更新和删除。例如,你可以创建一个JavaScript函数,该函数调用DWR的接口,执行SQL查询并获取结果。这些结果可以直接在页面上显示,而无需重新加载页面...
Spring整合DWR(Direct Web Remoting)以实现Comet技术,是构建实时、无刷新的多人聊天室的一种高效方法。这种技术允许服务器向客户端推送数据,而无需客户端频繁发起请求,从而大大提升了用户体验。下面我们将深入...
**DWR(Direct Web Remoting)技术详解及聊天室实现** DWR,全称为Direct Web Remoting,是一种在Web应用程序中实现服务器端与客户端之间直接交互的技术。它允许JavaScript在浏览器端直接调用Java方法,提供了类似...
【标题】"DWR实现Web类似Web桌面功能"揭示了一个技术应用场景,即使用Direct Web Remoting (DWR)框架在Web应用中实现类似桌面应用的交互体验。DWR是一种JavaScript库,它允许JavaScript代码直接调用服务器端的Java...
综上所述,这个项目涵盖了DWR的基本应用,以及如何利用它实现实时通信,增强用户交互,包括聊天室、级联选择和搜索提示功能。这些知识点不仅涉及到技术实现,也强调了用户体验的设计。通过这样的实践,开发者可以更...