版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 短片电影在印度电影业中的作用
- 2023年灯柱灯杆项目评估分析报告
- 2023年智能体脂秤项目成效分析报告
- 2023年橡胶充气、减震制品项目综合评估报告
- 白酒酿造过程中的品质稳定性研究考核试卷
- 2024-2025学年教室内外的霸凌预防教学设计探讨
- 2024-2025学年提升小学生自我意识的教学设计
- Module 1 Using my five senses.(教学设计)-2023-2024学年沪教牛津版(深圳用)英语三年级下册
- 2024-2025学年社会工作在校园霸凌预防的教学设计
- 2024-2025学年小学生情绪管理心理教育教学设计
- 用友手袋箱包皮具行业ERP解决方案
- 【精品】小学生心理健康测试卷(含答案)
- 武陟大气污染防治专家团队技术服务内容及要求
- 小学语文课堂教学艺术(课堂PPT)
- 家庭装饰装修工程施工项目确认表
- 临床医学教学模式
- 小学《爱国主义教育》主题班会PPT课件
- 《现场施工现场临时用电安全技术规范》试题
- 泵阀制造项目商业计划书范文参考
- 防雷施工组织方案
- 急诊六大病种诊疗流程图
评论
0/150
提交评论