chatapplet.jsp
上传用户:jhtang88
上传日期:2014-01-27
资源大小:28528k
文件大小:9k
源码类别:

Jsp/Servlet

开发平台:

Java

  1. <%@ page contentType="text/html; charset=utf-8"
  2. import = "java.io.*"
  3. import = "cn.js.fan.util.*"
  4. import = "com.redmoon.oa.person.*"
  5. import = "com.redmoon.oa.*"
  6. import = "com.redmoon.oa.pvg.Privilege"
  7. %>
  8. <%@ page import="com.redmoon.chat.ChatClient"%>
  9. <%@ page import="java.util.Properties" %>
  10. <%
  11. Privilege privilege = new Privilege();
  12. UserSetupDb usd = new UserSetupDb();
  13. usd = usd.getUserSetupDb(privilege.getUser(request));
  14. // 本页用于刷新各种数据
  15. // request.setCharacterEncoding("utf-8");
  16. String nick,room;
  17. nick = ParamUtil.get( request, "nick" );
  18. room = request.getParameter("room");
  19. // System.out.println("chatapplet.jsp1 nick=" + nick + " room=" + room);
  20. room = ParamUtil.get( request, "room" );
  21. // System.out.println("chatapplet.jsp2 nick=" + nick + " room=" + room);
  22. %>
  23. <html>
  24. <head>
  25. <title>refresher</title>
  26. <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  27. <script src='../dwr/interface/MessageDb.js'></script>
  28. <script src='../dwr/engine.js'></script>
  29. <script src='../dwr/util.js'></script>
  30. <script>
  31. var userName = "<%=privilege.getUser(request)%>";
  32. function getNewMsg(userName) {
  33.   try {
  34.    divMsg.innerHTML = "";
  35.    MessageDb.getNewMsgsOfUser(showMsgWin, userName);
  36.   }
  37.   catch (e) {
  38.    // alert(e);
  39.   }
  40. }
  41.   
  42. var msgWin;
  43. var width = 320;
  44. var height = 183;
  45. function showMsgWin(msg) {
  46.   if (msg.length>0) {
  47.   for (var data in msg) {
  48. // alert("data=" + data);
  49. // alert(msg[data].title);
  50. var id = msg[data].id
  51. var title = msg[data].title;
  52. var sender = msg[data].sender;
  53. divMsg.innerHTML += "<input name='ids' value='" + msg[data].id + "' type=hidden><a href='javascript:showmsg(" + msg[data].id + ")'>" + msg[data].title + "</a>&nbsp;&nbsp;" + msg[data].senderRealName + "&nbsp;[" + msg[data].rq + "]<BR>";
  54.   }
  55.      if (msgWin!=null) {
  56.    // msgWin.close()
  57. // msgWin = null;
  58. try {
  59. msgWin.focus();
  60. msgWin.getMsg();
  61. }
  62. catch (e) {
  63.   msgWin = null;
  64.   msgWin = window.open("../message_oa/newmsg.jsp","_blank","toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes,top=" + window.screen.availHeight + ",left=" + window.dialogLeft + ",width="+width+",height="+height);
  65. }
  66.   }
  67.   else
  68.   // 打开窗口,传递消息
  69.   msgWin = window.open("../message_oa/newmsg.jsp","_blank","toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes,top=" + window.screen.availHeight + ",left=" + window.dialogLeft + ",width="+width+",height="+height);
  70.   }
  71. }
  72. function getDivMsg() {
  73. return divMsg.innerHTML;
  74. }
  75. function refreshMsg() {
  76. getNewMsg(userName);
  77. }
  78. </script>
  79. <script language="JavaScript" type="text/javascript">
  80. var nick,room;
  81. nick = "<%=nick%>"
  82. room = "<%=room%>"
  83. function GetData(url) {
  84. try {
  85.      DataLoader.src = url;
  86.     } catch(e) {
  87.         return false;
  88.     }
  89. }
  90. function GetMsg(url) {
  91. try {
  92.      MsgLoader.src = url;
  93.     } catch(e) {
  94.         return false;
  95.     }
  96. }
  97. function GetUserList() {
  98. try {
  99.      UserListLoader.src = "chatclient.jsp?mode=list&user=" + getUserUTF8() + "&room=" + getRoomUTF8();
  100.     } catch(e) {
  101.         return false;
  102.     }
  103. }
  104. var timeoutid
  105. var count = 0;
  106. function getUser() {
  107. return nick;
  108. }
  109. function getRoom() {
  110. return room;
  111. }
  112. var timeoutid;
  113. var userlisttimespace;
  114. var olduserlisttime = 0
  115. var oldmsgtime = 0;
  116. var msgtimespace;
  117. <%
  118. // 取刷新时间
  119. com.redmoon.oa.Config cfg = new com.redmoon.oa.Config();
  120. String refresh_talk = cfg.get("refresh_talk");
  121. String refresh_userlist = cfg.get("refresh_userlist");
  122. String refresh_message = cfg.get("refresh_message");
  123. %>
  124. var refresh_talk = <%=refresh_talk%>;
  125. var refresh_userlist = <%=refresh_userlist%>;
  126. var refresh_message = <%=refresh_message%>;
  127. function refresh()
  128. {
  129. var d = new Date();
  130. sec = d.getSeconds()
  131. userlisttimespace = sec-olduserlisttime
  132. if(userlisttimespace<0)
  133. userlisttimespace += 60
  134. if (userlisttimespace>=refresh_userlist) {
  135. olduserlisttime = sec;
  136. GetUserList();
  137. }
  138. <%if (usd.isMsgWinPopup()) {%>
  139. msgtimespace = sec - oldmsgtime;
  140. if (msgtimespace<0)
  141. msgtimespace += 60;
  142. if (msgtimespace>=refresh_message) {
  143. // 刷新消息
  144. oldmsgtime = sec;
  145. refreshMsg();
  146. }
  147. <%}%>
  148. var url = "chatclient.jsp?mode=poll&room=" + getRoomUTF8() + "&user=" + getUserUTF8();
  149. GetData( url );
  150. timeoutid = window.setTimeout("refresh()", refresh_talk); // 每隔3秒钟刷新一次
  151. }
  152. function getRoomUTF8()
  153. {
  154.   return myroom.innerHTML;
  155. }
  156. function getUserUTF8()
  157. {
  158. return mynick.innerHTML;
  159. }
  160. function showStatus(msg) {
  161. window.status = msg;
  162. }
  163. function addnicks(users)
  164. {
  165.   var ary = users.split(",");
  166.   var len = ary.length;
  167.   var str = "", user="";
  168.   for (i=0; i<len; i++)
  169.   {
  170.    user = ary[i];
  171. str += "<a href=javascript:window.parent.talkarea.getname('" +user+ "')>[" +user+ "]</a><br>"
  172.   }
  173.   if (typeof(window.parent.nickarea)=="object")
  174.   if (typeof(window.parent.nickarea.s_nicknamelist)=="object")
  175. window.parent.nickarea.s_nicknamelist.innerHTML = str;
  176. }
  177. function rename(newuser)
  178. {
  179.     if (typeof(window.parent.senderFrame.rename)=="function")
  180. window.parent.senderFrame.rename(getUser(), getRoom(), newuser);
  181. }
  182. function jumptoroom(room)
  183. {
  184.     if (typeof(window.parent.senderFrame.JumpToRoom)=="function")
  185. window.parent.senderFrame.JumpToRoom(getUser(), getRoom(), room);
  186. }
  187. function sendAnnounce(str)
  188. {
  189.     if (typeof(window.parent.senderFrame.sendAnnounce)=="function")
  190. window.parent.senderFrame.sendAnnounce(getUser(), getRoom(), str);
  191. }
  192. function kicksb(sb)
  193. {
  194.     if (typeof(window.parent.senderFrame.KickSb)=="function")
  195. window.parent.senderFrame.KickSb(getUser(), getRoom(), sb);
  196. }
  197. function getRoomInfo() {
  198.     if (typeof(window.parent.senderFrame.getRoomInfo)=="function")
  199. window.parent.senderFrame.getRoomInfo(getUser(), getRoom());
  200. }
  201. function getUserInfo(user) {
  202.     if (typeof(window.parent.senderFrame.getUserInfo)=="function")
  203. window.parent.senderFrame.getUserInfo(getUser(), getRoom(), user);
  204. }
  205. function showtalk(msg)
  206. {
  207. if (typeof(window.parent.showchatarea)=="object")
  208. if (typeof(window.parent.showchatarea.parsemyshow)=="function")
  209. window.parent.showchatarea.parsemyshow(msg);
  210. }
  211. function roomlist() {
  212. window.parent.nickarea.location.href = "roomlist.jsp?user=" + getUserUTF8() + "&room=" + getRoomUTF8();
  213. }
  214. function showmsg(msg)
  215. {
  216.   msg = "<table><tr><td>"+msg+"</td></tr></table>"
  217.   if (typeof(window.parent.showchatarea.showchat)=="function")
  218.     window.parent.showchatarea.showchat(msg,1);
  219. }
  220. function send(msg)
  221. {
  222.   if (typeof(window.parent.senderFrame.SendMsg)=="function")
  223.     window.parent.senderFrame.SendMsg(getUser(), getRoom(), msg);
  224. }
  225. function window_onload()
  226. {
  227.   refresh();
  228.   if (typeof(window.parent.nickarea)=="object")
  229.    if (typeof(window.parent.nickarea.room)=="object")
  230.   window.parent.nickarea.room.innerText = getRoom();
  231.   if (typeof(window.parent.talkarea)=="object")  
  232.   if (typeof(window.parent.talkarea.setmynick)=="function") {
  233. window.parent.talkarea.setmynick(getUser())
  234.   }
  235.   if (typeof(window.parent.talkarea)=="object")  
  236.   if (typeof(window.parent.nickarea.setroom)=="function")
  237. window.parent.nickarea.setroom(getRoom());
  238. }
  239. function window_onunload() {
  240. <%
  241. String reloadreason = ParamUtil.get( request, "reloadreason" );
  242. //当jumptoroom reload时并不logout
  243. if (!reloadreason.equals("jumptoroom")) {
  244. %>
  245. LogoutScript.src = "chatclient.jsp?mode=Logout&user=" + getUserUTF8() + "&room=" + getRoomUTF8();
  246. <%}%>
  247. clearTimeout(timeoutid);
  248. }
  249. //-->
  250. </SCRIPT>
  251. <script id="DataLoader" language="JavaScript" type="text/javascript" defer></script>
  252. <script id="MsgLoader" language="JavaScript" type="text/javascript" defer></script>
  253. <script id="UserListLoader" language="JavaScript" type="text/javascript" defer></script>
  254. <script id="LogoutScript" language="JavaScript" type="text/javascript" defer></script>
  255. </head>
  256. <body onLoad="return window_onload()" onUnload="return window_onunload()">
  257. <jsp:useBean id="cfgparser" scope="page" class="cn.js.fan.util.CFGParser"/>
  258. 用户: <span id="mynick" name="mynick"><%=StrUtil.UrlEncode(nick)%></span>
  259. 房间: <span id="myroom" name="myroom"><%=StrUtil.UrlEncode(room)%></span>
  260. <%
  261. if (!privilege.isUserLogin( request )) {
  262. out.print( StrUtil.Alert_Back( "您尚未登录OA,请从正确的入口进入!" ) );
  263.     return;
  264. }
  265. //登录聊天室
  266. ChatClient cc = new ChatClient();
  267. try {
  268. // cfgparser.parse("config_oa.xml");
  269. // Properties props = cfgparser.getProps();
  270. // 当jumtptoroom时,因为室中已有nick,所以不需要再login
  271. System.out.println("chatapplet.jsp nick=" + nick + " room=" + room);
  272. if ( !reloadreason.equals("jumptoroom") && cc.login( request, nick, room ) ) {
  273. out.print( StrUtil.ShowStatus( cc.getReturnMsg() ) );
  274. }
  275. }
  276. catch ( ErrMsgException e ) {
  277. out.println( StrUtil.ShowStatus(e.getMessage()) );
  278. return;
  279. }
  280. %>
  281. <div id="divMsg" name="divMsg"></div>
  282. </body>
  283. </html>