package com.lhq;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashSet;
import java.util.List;
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;
/**
* 处理聊天相关
*
* @author lhq
*
*/
public class ChatManager {
/** 保存当前在线用户列表 */
public static List<User> users = new ArrayList<User>();
/**
* 更新在线用户列表
* @param username 待添加到列表的用户名
* @param flag 是添加用户到列表,还是只获得当前列表
* @param request
* @return 用户userid
*/
public String updateUsersList(String username, boolean flag, HttpServletRequest request) {
User user = null;
if (flag) {
// 这里取会话(HttpSession)的id为用户id
user = new User(request.getSession().getId(), username);
//保存用户到列表
users.add(user);
//将用户id和页面脚本session绑定
this.setScriptSessionFlag(user.getUserid());
}
//获得DWR上下文
ServletContext sc = request.getSession().getServletContext();
ServerContext sctx = ServerContextFactory.get(sc);
//获得当前浏览 index.jsp 页面的所有脚本session
Collection sessions = sctx.getScriptSessionsByPage("/chat/index.jsp");
Util util = new Util(sessions);
//处理这些页面中的一些元素
util.removeAllOptions("users");
util.addOptions("users", users, "username");
util.removeAllOptions("receiver");
util.addOptions("receiver", users,"userid","username");
if(!flag){
return null;
}
return user.getUserid();
}
/**
* 将用户id和页面脚本session绑定
* @param userid
*/
public void setScriptSessionFlag(String userid) {
WebContextFactory.get().getScriptSession().setAttribute("userid", userid);
}
/**
* 根据用户id获得指定用户的页面脚本session
* @param userid
* @param request
* @return
*/
@SuppressWarnings("unchecked")
public ScriptSession getScriptSession(String userid, HttpServletRequest request) {
ScriptSession scriptSessions = null;
Collection<ScriptSession> sessions = new HashSet<ScriptSession>();
sessions.addAll(ServerContextFactory.get(request.getSession().getServletContext())
.getScriptSessionsByPage("/chat/index.jsp"));
for (ScriptSession session : sessions) {
String xuserid = (String) session.getAttribute("userid");
if (xuserid != null && xuserid.equals(userid)) {
scriptSessions = session;
}
}
return scriptSessions;
}
/**
* 发送消息
* @param sender 发送者
* @param receiverid 接收者id
* @param msg 消息内容
* @param request
*/
public void send(String sender,String receiverid,String msg,HttpServletRequest request){
ScriptSession session = this.getScriptSession(receiverid, request);
Util util = new Util(session);
util.setStyle("showMessage", "display", "");
util.setValue("sender", sender);
util.setValue("msg", msg);
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
DWR在线即时聊天系统,实现了对指定用户发送消息,和即时显示功能
共34个文件
tld:15个
jar:5个
js:2个
4星 · 超过85%的资源 需积分: 10 63 下载量 169 浏览量
2011-02-17
09:37:13
上传
评论 1
收藏 1.19MB RAR 举报
温馨提示
DWR在线即时聊天系统,实现了对指定用户发送消息,和即时显示功能 java jsp页面
资源推荐
资源详情
资源评论
收起资源包目录
DWR在线即时聊天系统,实现了对指定用户发送消息,和即时显示功能.rar (34个子文件)
chat
src
com
lhq
ChatManager.java 3KB
User.java 531B
.classpath 738B
.mymetadata 285B
.settings
org.eclipse.wst.validation.prefs 527B
.myeclipse
.project 1KB
WebRoot
META-INF
MANIFEST.MF 39B
chat.js 1KB
index.jsp 1KB
jquery-1.3.1.js 115KB
WEB-INF
classes
com
lhq
User.class 787B
ChatManager.class 4KB
scriptfree.tld 2KB
c.tld 16KB
permittedTaglibs.tld 1KB
fmt.tld 19KB
sql-1_0.tld 6KB
sql-1_0-rt.tld 5KB
dwr.xml 361B
lib
commons-logging.jar 54KB
log4j-1.2.11.jar 342KB
jstl.jar 20KB
standard.jar 384KB
dwr.jar 489KB
x.tld 12KB
fn.tld 7KB
fmt-1_0-rt.tld 11KB
c-1_0-rt.tld 11KB
c-1_0.tld 11KB
web.xml 1KB
x-1_0-rt.tld 7KB
sql.tld 8KB
fmt-1_0.tld 12KB
x-1_0.tld 7KB
共 34 条
- 1
资源评论
- sunkanguwaysoft2012-03-07在IE下面可以用,但是在线用户不准确,火狐下面不能用。
- shenzhenclass2012-12-22报错 好像不怎么样的。
- loverongzongqiang2012-12-10嗯嗯 相当不错是我想要的
- chen452572112011-10-11在非ie浏览器下不可用,js报错
- azg2008abc2012-12-26不太明白怎么弄 脑子里乱糟糟的
yuyu456
- 粉丝: 5
- 资源: 4
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功