读书人

学习了dwr+参照写的一个Extjs做前端

发布时间: 2012-12-25 16:18:28 作者: rapoo

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

?

? ? ? ? 前些时间学习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 页面的所有脚本sessionCollection 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 "";}}

?

本程序可以实现一对一聊天,在同一台电脑上的两个浏览器可以,在局域网的两台电脑也可以,不过有时发送消息会出现问题,不知道是浏览器兼容性的问题,还是代码有些错误,请赐教。。。

界面图片:

?

读书人网 >JavaScript

热点推荐