DWR网页即时通讯_第1页
DWR网页即时通讯_第2页
DWR网页即时通讯_第3页
DWR网页即时通讯_第4页
DWR网页即时通讯_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Dwr实现类似webqq的即时聊天功能只要写如下几个用户类,再对dwr进行一定的配置,就能简单的实现这个功能用户的JAVABEAN User.java Java代码 1. package com.lhq;   2.   3. /*4. * 用户类5. *6. */  7. public class User   8.   9.     private String userid;  &#

2、160;10.   11.     private String username;   12.   13.     public String getUserid()   14.         return userid;   15.       

3、0;16.   17.     public void setUserid(String userid)   18.         this.userid = userid;   19.        20.   21.     public String getUs

4、ername()   22.         return username;   23.        24.   25.     public void setUsername(String username)   26.        

5、; this.username = username;   27.        28.   29.     public User(String userid, String username)   30.         super();   31.      &#

6、160;  this.userid = userid;   32.         this.username = username;   33.        34.   35.   聊天处理类 ChatManager.java Java代码 1. package com.lhq;   2.  &

7、#160;3. import java.util.ArrayList;   4. import java.util.Collection;   5. import java.util.HashSet;   6. import java.util.List;   7.   8. import javax.servlet.ServletContext;   9. import javax.servlet.http.Htt

8、pServletRequest;   10.   11. import org.directwebremoting.ScriptSession;   12. import org.directwebremoting.ServerContext;   13. import org.directwebremoting.ServerContextFactory;   14. import org.directwebremoting.WebContextFacto

9、ry;   15. import xy.dwr.Util;   16.   17. /*18. * 处理聊天相关19. *20. * *21. */  22. public class ChatManager   23.   24.     /* 保存当前在线用户列表 */  25.     pub

10、lic static List<User> users = new ArrayList<User>();   26.   27.     /*28.       * 更新在线用户列表29.       * param username 待添加到列表的用户名30.       * param flag 是添

11、加用户到列表,还是只获得当前列表31.       * param request32.       * return 用户userid33.       */  34.     public String updateUsersList(String username, boolean flag, HttpServletRequest request) &

12、#160; 35.          User user = null;   36.         if (flag)   37.             / 这里取会话(HttpSession)的id为用户id   

13、38.              user = new User(request.getSession().getId(), username);   39.             /保存用户到列表   40.       &#

14、160;      users.add(user);       41.             /将用户id和页面脚本session绑定   42.             this.setScriptSessionF

15、lag(user.getUserid();   43.            44.         /获得DWR上下文   45.          ServletContext sc = request.getSession().getServletContext();  &

16、#160;46.          ServerContext sctx = ServerContextFactory.get(sc);   47.         /获得当前浏览 index.jsp 页面的所有脚本session   48.          Collection sessions = sc

17、tx.getScriptSessionsByPage("/chat/index.jsp");   49.          Util util = new Util(sessions);   50.         /处理这些页面中的一些元素   51.       &

18、#160;  util.removeAllOptions("users");   52.          util.addOptions("users", users, "username");   53.          util.removeAllOptions("receiver"); &

19、#160; 54.          util.addOptions("receiver", users,"userid","username");   55.         if(!flag)   56.           

20、  return null;   57.            58.         return user.getUserid();   59.        60.   61.     /*62.  &#

21、160;    * 将用户id和页面脚本session绑定63.       * param userid64.       */  65.     public void setScriptSessionFlag(String userid)   66.          WebCont

22、extFactory.get().getScriptSession().setAttribute("userid", userid);   67.        68.   69.     /*70.       * 根据用户id获得指定用户的页面脚本session71.       * param userid72.  

23、60;    * param request73.       * return74.       */  75.     SuppressWarnings("unchecked")   76.     public ScriptSession getScriptSession(String userid, HttpS

24、ervletRequest request)   77.          ScriptSession scriptSessions = null;   78.          Collection<ScriptSession> sessions = new HashSet<ScriptSession>();   79.

25、         sessions.addAll(ServerContextFactory.get(request.getSession().getServletContext()   80.                  .getScriptSessionsByPage("/chat/index.jsp"); &

26、#160; 81.         for (ScriptSession session : sessions)   82.              String xuserid = (String) session.getAttribute("userid");   83.    &#

27、160;        if (xuserid != null && xuserid.equals(userid)   84.                  scriptSessions = session;   85.     

28、           86.            87.         return scriptSessions;   88.        89.        

29、90.     /*91.       * 发送消息92.       * param sender 发送者93.       * param receiverid 接收者id94.       * param msg 消息内容95.       * param request96.   

30、    */  97.     public void send(String sender,String receiverid,String msg,HttpServletRequest request)   98.          ScriptSession session = this.getScriptSession(receiverid, request); 

31、60; 99.          Util util = new Util(session);   100.          util.setStyle("showMessage", "display", "");   101.      

32、;    util.setValue("sender", sender);   102.          util.setValue("msg", msg);   103.        104.   聊天主页面 index.jsp Html代码1. <% page language="ja

33、va" pageEncoding="GBK"%>  2. <html>  3.     <head>  4.         <title>chat</title>  5.         <meta http

34、-equiv="pragma" content="no-cache">  6.         <meta http-equiv="cache-control" content="no-cache">  7.         <meta http-equi

35、v="expires" content="0">  8.         <script type='text/javascript' src='/chat/dwr/interface/ChatManager.js'></script>  9.         <

36、;script type='text/javascript' src='/chat/dwr/engine.js'></script>  10.         <script type='text/javascript' src='/chat/dwr/util.js'></script>  11.    

37、;     <script type="text/javascript" src="/chat/chat.js"></script>  12.     </head>  13.     <body>  14.        

38、0;<input type="hidden" name="userid" />  15.         <br>  16.          昵称:   17.         <input

39、0;type="text" name="username" />  18.         <input type="button" value="注册" onclick="register(this);" />  19.       

40、60; <br />  20.         <br />  21.          我要对   22.         <select name="receiver" id="rece

41、iver" disabled=true" >  23.         </select>  24.          说:   25.         <input type="text" na

42、me="message" id="message" disabled="true" />  26.         <input type="button" value="发送" id="send" name="send" disabled="true&qu

43、ot;  27.             onclick="send();" />  28.         <br />  29.         <br /> 

44、60;30.          在线用户列表:   31.         <ul id="users">  32.         </ul>  33.   34.      

45、;   <div id="showMessage" style="display: none">  35.             <span id="sender"></span>对你说:   36.       

46、0;     <span id="msg"></span>  37.         </div>  38.     </body>  39. </html>  JAVASCRIPT 文件 chat.js Js代码1. /*2. * 注册帐号3. *

47、/  4. function register(button)   5.     if ($('username').value = "" | $('username').value.length <= 0)   6.          alert("请输入昵称");   7. &

48、#160;       return;   8.        9.   10.     /* 下面是对一些按钮的禁用和激活操作 */  11.      $('username').disabled = true;   12.      bu

49、tton.disabled = true;   13.      $('message').disabled = false;   14.      $('send').disabled = false;   15.      $('receiver').disabled = false;   16. 

50、0; 17.     /* 把我输入的用户名注册到服务器,并获得用户id(这里用session id 代替) */  18.      ChatManager.updateUsersList($('username').value, true, function(data)   19.         if (data != nul

51、l && data.length > 0)   20.              $('userid').value = data; / 注册成功,把userid放到当前页面   21.            22.      );

52、   23.   24.   25. /*26. * 页面初始化27. */  28. function init()   29.      dwr.engine.setActiveReverseAjax(true); / 激活反转 重要   30.      ChatManager.updateUsersList(null, false); /

53、当你打开界面的时候,先获得在线用户列表.   31.   32.   33. /*34. * 发送消息35. */  36. function send()   37.     var sender = dwr.util.getValue('username'); / 获得发送者名字   38.     var recei

54、ver = dwr.util.getValue('receiver'); / 获得接受者id   39.     var msg = dwr.util.getValue('message'); / 获得消息内容   40.      ChatManager.send(sender, receiver, msg); / 发送消息   41.  &#

55、160;42.   43. window.onload = init;/页面加载完毕后执行初始化方法init  配置文件 web.xml Xml代码 1. <?xml version="1.0" encoding="UTF-8"?>  2. <web-app version="2.4" xmlns="3.     xmlns:xsi="ht

56、tp://2001/XMLSchema-instance"  4.     xsi:schemaLocation="   5.      6.     <welcome-file-list>  7.         <welcome-file>index.jsp</we

57、lcome-file>  8.     </welcome-file-list>  9.     <servlet>  10.         <servlet-name>dwr-invoker</servlet-name>  11.       

58、;  <servlet-class>  12.              org.directwebremoting.servlet.DwrServlet   13.         </servlet-class>  14.      

59、0;  <init-param>  15.             <description>调试DWR,发布系统时应将其设为false</description>  16.             <param-name>debug</para

60、m-name>  17.             <param-value>true</param-value>  18.         </init-param>  19.         <init-par

61、am>  20.             <description>使用服务器推技术(反转AJAX)</description>  21.             <param-name>activeReverseAjaxEnabled</param-name>&#

62、160; 22.             <param-value>true</param-value>  23.         </init-param>  24.         <init-param> 

63、 25.             <param-name>  26.                  initApplicationScopeCreatorsAtStartup   27.             </param-name>  28.           &#

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论