《web開發(fā)》課程設計報告--聊天室_第1頁
已閱讀1頁,還剩32頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、<p><b>  《Web開發(fā)》</b></p><p><b>  課程設計報告</b></p><p> ?。?011— 2012學年 第 2 學期)</p><p>  題 目: 聊 天 室 </p><p>  專 業(yè): 計算機網(wǎng)絡

2、技術 </p><p>  班 級: </p><p>  姓名學號: xxx(1007052139) </p><p>  指導教師: </p><p>  成 績:

3、 </p><p><b>  目 錄</b></p><p><b>  目 錄II</b></p><p><b>  1 概 述1</b></p><p>  1.1 設計目標1</p><p>  1.

4、2 項目規(guī)劃1</p><p>  1.3 開發(fā)工具的選擇2</p><p><b>  2 需求分析3</b></p><p>  2.1 需求分析3</p><p>  2.2 數(shù)據(jù)庫表設計4

5、 </p><p>  3 系統(tǒng)總體設計6</p><p><b>  3.1系統(tǒng)結構6</b></p><p>  4系統(tǒng)功能模塊實現(xiàn)7</p><p>  4.1 登錄和注冊界面模塊7</p><p>  4.2 選擇聊天室界面模塊10</p><p&g

6、t;  4.3 聊天室主界面模塊12</p><p>  4.4 用管理員高級功能管理模塊20</p><p><b>  5 調(diào)試分析28</b></p><p><b>  6心得體會29</b></p><p><b>  致 謝30</b></p>

7、<p>  參 考 文 獻31</p><p><b>  1 概 述</b></p><p><b>  1.1 設計目標</b></p><p>  從功能角色上來講,在線聊天室可以有兩種類型的用戶,普通用戶和管理員。</p><p>  其中,普通用戶在登錄后,可以選擇性的進

8、入不同的聊天室,并通過聊天界面,向一人或多人發(fā)送聊天消息,進行聊天交流。如果是第一次進入到該聊天室,還可以通過本模塊提供的注冊功能,提交注冊信息,成為本聊天室的用戶。</p><p>  管理員在登陸后,除了可以聊天外,還可以擁有各種管理的權限,比如查看所有在線用戶信息,還可以把一些不遵守聊天規(guī)則的用戶趕出聊天室,甚至從數(shù)據(jù)庫里把一些惡意聊天用戶除名。</p><p><b> 

9、 1.2 項目規(guī)劃</b></p><p>  本聊天室需要提供如下的界面和功能。</p><p>  1、需要提供支持用戶登陸以及身份驗證的WEB界面和實現(xiàn)后臺對應功能的模塊。在這個模塊中,能根據(jù)登入者擁有的權限,分別開放不同的權限。</p><p>  2、需要一個支持用戶注冊的界面和對應的后臺模塊。</p><p>  3

10、、需要為普通用戶和管理員提供一個瀏覽所有聊天室的界面和對應后臺功能模塊。在這個界面中,用戶可以選擇性的進入不同的聊天室。</p><p>  4、需要為普通用戶和管理員提供一個支持多人聊天的界面和對應的后臺模塊。在這個界面中用戶和管理員可以選擇聊天對象,也可以想聊天對象發(fā)送信息。</p><p>  5、需要為管理員提供一個查詢所有用戶的界面和對應的功能模塊,這個界面其實就是管理員實現(xiàn)其管

11、理功能的界面,在這個界面里,管理員可以實現(xiàn)“趕人”的功能,也可以實現(xiàn)“刪除聊天用戶”的動作。</p><p>  1.3 開發(fā)工具的選擇 </p><p>  JSP(JavaServer Pages)是由Sun Microsystems公司倡導、許多公司參與一起建立的一種動態(tài)網(wǎng)頁技術標準。JSP技術有點類似ASP技術,它是在傳統(tǒng)的網(wǎng)頁HTML文件(*.htm,*.html)中插入Jav

12、a程序段(Scriptlet)和JSP標記(tag),從而形成JSP文件(*.jsp)。用JSP開發(fā)的Web應用是跨平臺的,即能在Linux下運行,也能在其他操作系統(tǒng)上運行。 </p><p>  JSP技術使用Java編程語言編寫類XML的tags和scriptlets,來封裝產(chǎn)生動態(tài)網(wǎng)頁的處理邏輯。網(wǎng)頁還能通過tags和 scriptlets訪問存在于服務端的資源的應用邏輯。JSP將網(wǎng)頁邏輯與網(wǎng)頁

13、設計和顯示分離,支持可重用的基于組件的設計,使基于Web的應用程序的開發(fā)變得迅速和容易。Web服務器在遇到訪問JSP網(wǎng)頁的請求時,首先執(zhí)行其中的程序段,然后將執(zhí)行結果連同JSP文件中的HTML代碼一起返回給客戶。JSP與Java Servlet一樣,是在服務器端執(zhí)行的,通常返回該客戶端的就是一個HTML文本,因此客戶端只要有瀏覽器就能瀏覽。JSP的1.0規(guī)范的最后版本是1999年9月推出的,12月又推出了1.1規(guī)范。目前較新的是JSP1

14、.2規(guī)范,JSP2.0規(guī)范的征求意見稿也已出臺。</p><p>  JSP頁面由HTML代碼和嵌入其中的Java代碼所組成。服務器在頁面被客戶端請求以后對這些Java代碼進行處理,然后將生成的HTML頁面返回給客戶端的瀏覽器。Java Servlet 是JSP的技術基礎,而且大型的Web應用程序的開發(fā)需要Java Servlet和JSP配合才能完成。</p><p><b> 

15、 JSP的優(yōu)勢</b></p><p>  (1)一次編寫,到處運行。在這一點上Java比PHP更出色,除了系統(tǒng)之外,代碼不用做任何更改。</p><p> ?。?)系統(tǒng)的多平臺支持?;旧峡梢栽谒衅脚_上的任意環(huán)境中開發(fā),在任意環(huán)境中進行系統(tǒng)部署,在任意環(huán)境中擴展。相比ASP/PHP的局限性是顯而易見的。</p><p> ?。?)強大的可伸縮性。從只

16、有一個小的Jar文件就可以運行Servlet/JSP,到由多臺服務器進行集群和負載均衡,到多臺Application進行事務處理,消息處理,一臺服務器到無數(shù)臺服務器,Java顯示了一個巨大的生命力。</p><p> ?。?)多樣化和功能強大的開發(fā)工具支持。這一點與ASP很像,Java已經(jīng)有了許多非常優(yōu)秀的開發(fā)工具,而且許多可以免費得到,并且其中許多已經(jīng)可以順利的運行于多種平臺之下。</p><

17、;p><b>  2 需求分析</b></p><p><b>  2.1 需求分析</b></p><p>  21世紀是網(wǎng)絡的時代,Internet的普及已經(jīng)影響了傳統(tǒng)的交流方式。網(wǎng)絡聊天室系統(tǒng)是計算機網(wǎng)絡發(fā)展的產(chǎn)物,是最為常見、最受廣大互聯(lián)網(wǎng)使用者所認可的基于Web的網(wǎng)絡應用系統(tǒng)。隨著互聯(lián)網(wǎng)的發(fā)展,人們通過網(wǎng)絡可以更方便快捷地進行信

18、息交流和學習,聊天系統(tǒng)可以為大家提供一個更好的交流平臺,在這個平臺上,人們可以通過文字與符號進行實時的交談、聊天,它是一個向整個因特網(wǎng)開放的地方,是提供給網(wǎng)民一個交友與娛樂的場所,在聊天室里網(wǎng)民可選擇自已的聊天對象,與其進行對話交流,是網(wǎng)民之間相互溝通、交流情感的最佳方式之一。</p><p>  從傳播方式上講, 聊天室傳播是非線性傳播。非線形傳播指聊天室傳播的信息是為無數(shù)的共享空間的網(wǎng)絡用戶所發(fā)出的, 任何擁

19、有網(wǎng)絡傳播權利的人都可以得到, 網(wǎng)絡打破了傳統(tǒng)媒體單向傳送信息的格局, 信息傳播者與接收者之間的互動變得切實可行。從傳播的信息內(nèi)涵上講, 聊天室的消息結構是無中心的。聊天室所給受 眾帶來的信息與感受作為一種現(xiàn)代生活資源, 在實現(xiàn)了從傳統(tǒng)大眾傳播的單向傳播向多向傳播的轉變后, 極大地拓展了現(xiàn)代生活空間, 使傳播者與受眾之間的直接連通成為可能。這一轉變使整個傳播結構與傳播效果發(fā)生了巨大變化, 是傳統(tǒng)媒體無法比擬的。</p>&

20、lt;p>  根據(jù)CNNIC 發(fā)布的第十五次中國互聯(lián)網(wǎng)絡發(fā)展狀況統(tǒng)計報告, 有3.5%的商業(yè)網(wǎng)站提供網(wǎng)絡聊天。熱衷于網(wǎng)上聊天的人群大部分集中于16~24 年齡段上, 經(jīng)濟上沒有獨立, 又缺乏網(wǎng)上支付手段的特點也是聊天室不為商業(yè)網(wǎng)站看好的重要理由之一。目前經(jīng)營商獲得收益的渠道有兩條: 在線廣告和電子商務。青少年在經(jīng)濟上沒有自立, 經(jīng)營商通常很難通過電子商務獲得收入; 而在在線廣告方面, 各商業(yè)網(wǎng)站目前的廣告客戶主要目標人群鎖定中、高

21、收入的白領階層, 面向青少年消費市場的網(wǎng)上廣告幾乎沒有, 無法通過網(wǎng)上廣告獲得收益。因此, 對于青少年聚集的網(wǎng)上聊天室, 網(wǎng)絡公司自然沒有太高的熱情。 實際上, 青少年的消費市場一向是規(guī)模可觀、利潤豐厚的一塊大蛋糕。無論流行音樂、新潮服飾、娛樂場所, 青少年消費都是其中的主力。論市場規(guī)模, 全國青少年消費市場的總規(guī)模不低于一千億。我們看到, 并非聊天的人群本身缺乏商業(yè)價值, 而是目前沒有好的辦法將這種價值加以發(fā)掘。在線廣告理應成為聊天室

22、獲得商業(yè)收益的主要手段。</p><p>  隨著研發(fā)技術的進步,qq.msn等聊天軟件的面世,取代了聊天室。同時,聊天室內(nèi)用戶過激,不法等言辭,也是聊天室逐漸沒落的原因。但是,聊天軟件的局限性,不比聊天室開放性強,面向廣。只有真正了解聊天室的主要使用人群, 才能更好地設置聊天室的主題、話題、頁面風格等。要重視聊天室產(chǎn)品的氛圍經(jīng)濟效益, 可以成為各種汽車俱樂部、攀巖俱樂部、自行車俱樂部等的合作伙伴, 吸引更多會員

23、,成為網(wǎng)上會所。聊天室還應注意自身形象的塑造, 只有個性化、特色化才能使聊天室產(chǎn)品脫穎而出。要注意適當?shù)膹V告宣傳。在以上的種種因素下,本課題的研究方向就是運用JSP技術營造一個簡單,友好的網(wǎng)絡聊天室,為互聯(lián)網(wǎng)使用者提供學習,討論和交流的平臺。</p><p>  2.2 數(shù)據(jù)庫表設計</p><p>  在ChatRoom數(shù)據(jù)庫中建一個名為userinfo的表,如表3.2所示。</

24、p><p>  表3.2userinfo數(shù)據(jù)表 </p><p>  在ChatRoom數(shù)據(jù)庫中新建一個名為msginfo的表,用來保存聊天信息。在顯示聊天記錄時,可以通過查詢語句對不同的用戶顯示不同的信息。如表3.3所示。</p><p>  表3.3msginfo表 </p><p>  在ChatRoom數(shù)據(jù)庫表中新建一個名為onlineU

25、ser的表,用來保存在線用戶信息。如表3.4所示。</p><p>  表3.4 onlineUser表</p><p><b>  3 系統(tǒng)總體設計</b></p><p><b>  3.1系統(tǒng)結構</b></p><p>  本系統(tǒng)將分為四大模塊,即數(shù)據(jù)庫通用模塊、用戶登錄與注冊模塊、聊天主

26、模塊、管理員模塊,具體描述如表3.1所示。</p><p>  表3.1 系統(tǒng)結構表</p><p><b>  4系統(tǒng)功能模塊實現(xiàn)</b></p><p>  4.1 登錄和注冊界面模塊</p><p>  登錄界面模塊是通過訪問數(shù)據(jù)庫中的userinfo表中的Name和Password兩個字段來判斷用戶名和密碼是否匹

27、配,如果匹配就登入成功,否則登入失敗,如果用戶是第一次登錄該聊天室,則自動注冊。如圖4.1所示。</p><p><b>  圖4.1 登錄界面</b></p><p><b>  核心代碼:</b></p><p>  package net.chat;</p><p>  import java

28、.sql.*;</p><p>  import java.util.*;</p><p>  import java.text.SimpleDateFormat;</p><p>  public class CheckLogin {</p><p>  public String checklogin(String userName,S

29、tring userPassword) </p><p>  throws SQLException,ClassNotFoundException</p><p><b>  {</b></p><p>  BaseConn conn = null;</p><p><b>  try</b><

30、;/p><p><b>  {</b></p><p>  conn = new BaseConn();</p><p>  String sql = "select * from userInfo where nickName=?";</p><p>  PreparedStatement ps = c

31、onn.preparedStatement(sql);</p><p>  ps.setString(1,userName);</p><p>  ResultSet rs = conn.executeQuery();</p><p>  if(rs.next())</p><p><b>  {</b></p&g

32、t;<p>  if(rs.getString("userPassword").equals(userPassword))</p><p><b>  {</b></p><p>  SimpleDateFormat cal = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")

33、;</p><p>  String time = cal.format(new java.util.Date()); </p><p>  sql="update userInfo set lastLoginTime=? where nickName=?";</p><p>  ps=conn.preparedStatement(

34、sql);</p><p>  ps.setString(1,time);</p><p>  ps.setString(2,userName);</p><p>  conn.executeUpdate();</p><p>  return "SUCCESS_LOGIN";</p><p>&l

35、t;b>  }</b></p><p><b>  else</b></p><p>  return "WRONG_PASSWORD";</p><p><b>  }</b></p><p><b>  else</b></p&g

36、t;<p>  return "NONE_USER";</p><p>  }catch(SQLException ex)</p><p><b>  {</b></p><p>  ex.printStackTrace();</p><p><b>  throw ex;&l

37、t;/b></p><p>  }catch(ClassNotFoundException ex)</p><p><b>  {</b></p><p>  ex.printStackTrace();</p><p><b>  throw ex;</b></p><p&

38、gt;<b>  }</b></p><p><b>  finally</b></p><p><b>  {</b></p><p>  conn.closeDB(); </p><p><b>  }</b></p><p>

39、<b>  }</b></p><p>  public boolean saveToDataBase(String userName,String userPassword)</p><p>  throws SQLException,ClassNotFoundException</p><p><b>  {</b>&

40、lt;/p><p>  BaseConn conn = null;</p><p><b>  try</b></p><p><b>  {</b></p><p>  conn = new BaseConn();</p><p>  SimpleDateFormat cal

41、= new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");</p><p>  String time = cal.format(new java.util.Date());</p><p>  String sql = "insert into userInfo(nickName,userPassword,lastLogin

42、Time,role) values(?,?,?,?)";</p><p>  PreparedStatement ps = conn.preparedStatement(sql);</p><p>  ps.setString(1,userName);</p><p>  ps.setString(2,userPassword);</p>&

43、lt;p>  ps.setString(3,time);</p><p>  ps.setInt(4,0);</p><p>  conn.executeUpdate();</p><p>  return true;</p><p>  }catch(SQLException ex)</p><p><b

44、>  {</b></p><p>  ex.printStackTrace();</p><p><b>  throw ex;</b></p><p>  }catch(ClassNotFoundException ex)</p><p><b>  {</b></p>

45、;<p>  ex.printStackTrace();</p><p><b>  throw ex;</b></p><p><b>  }finally</b></p><p><b>  {</b></p><p>  conn.closeDB(); &l

46、t;/p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  4.2 選擇聊天室界面模塊</p><p>  如果登錄成功則進入選擇聊天室界面的模塊,如圖4.2所示:</p

47、><p>  圖4.2 選擇聊天室</p><p><b>  核心代碼:</b></p><p>  <%@ page language="java" import="java.util.*,net.chat.*" pageEncoding="GB2312"%></p&

48、gt;<p>  <%@include file="chkSession.jsp"%></p><p>  <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"></p><p><b>  <html></b&g

49、t;</p><p><b>  <head></b></p><p>  <title>聊天室列表</title> </p><p>  <meta http-equiv="pragma" content="no-cache"></p>

50、<p>  <meta http-equiv="cache-control" content="no-cache"></p><p>  <jsp:useBean id="chatList" class="net.chat.ChatRoomList"/> </p><p&g

51、t;<b>  </head> </b></p><p>  <body style="background:url('image/crl.jpg')"></p><p>  <span style="color:#ff88ff">歡迎您:</span></

52、style><span style="color:red"><%=session.getAttribute("_USER")%></span><span style="color:#ff88ff">希望您在這里聊得愉快!</span></p><p>  <!-- form表單,讓用

53、戶選擇一個聊天房間提交給redirectChatRoom.jsp處理--></p><p>  <form action="redirectChatRoom.jsp" method="post"></p><p>  <table border=0></p><p><b>  <

54、tr> </b></p><p>  <td><input type="radio" name="chatRoom" value="情感傾訴"><span style="color:#ff0000">情感傾訴</style></p><p>  

55、<%//這里通過javaBean組件獲取每個聊天室房間的在線人數(shù)%></p><p>  [<%=chatList.countUser("情感傾訴")%>]人</td></p><p><b>  </tr></b></p><p><b>  <tr>&

56、lt;/b></p><p>  <td><input type="radio" name="chatRoom" value="交友天地"><span style="color:#000088">交友天地</style></p><p>  [<%=c

57、hatList.countUser("交友天地")%>]人</td></p><p><b>  </tr></b></p><p><b>  <tr></b></p><p>  <td><input type="radio&qu

58、ot; name="chatRoom" value="龍門客棧" checked><span style="color:#90E090">龍門客棧</style></p><p>  [<%=chatList.countUser("龍門客棧")%>]人</td></p>

59、<p><b>  </tr></b></p><p><b>  <tr></b></p><p>  <td><input type="submit" value="進入"></td></p><p>&l

60、t;b>  </tr></b></p><p><b>  </table></b></p><p><b>  </form></b></p><p>  <div id="ad" style="position:absolute&

61、quot;></p><p>  <a href="http://room.9158.com/" target="_blank"></p><p>  <img src="C:\Users\Administrator\Workspaces\MyEclipse 8.5\ChatRoom\WebRoot\image\ro

62、om1.jpg" border="0"></p><p>  </a></div></p><p><b>  <script></b></p><p>  var x = 50,y = 60</p><p>  var xin = true, yi

63、n = true</p><p>  var step = 1 </p><p>  var delay = 10</p><p>  var obj=document.getElementById("ad") </p><p>  function floatAD() {</p><p><

64、b>  var L=T=0</b></p><p>  var R= document.body.clientWidth-obj.offsetWidth</p><p>  var B = document.body.clientHeight-obj.offsetHeight</p><p>  obj.style.left = x + docum

65、ent.body.scrollLeft</p><p>  obj.style.top = y + document.body.scrollTop</p><p>  x = x + step*(xin?1:-1) </p><p>  if (x < L) { xin = true; x = L} </p><p>  if (x

66、> R){ xin = false; x = R} </p><p>  y = y + step*(yin?1:-1) </p><p>  if (y < T) { yin = true; y = T } </p><p>  if (y > B) { yin = false; y = B } </p><p><

67、b>  }</b></p><p>  var itl= setInterval("floatAD()", delay) </p><p>  obj.onmouseover=function(){clearInterval(itl)} </p><p>  obj.onmouseout=function(){itl=setIn

68、terval("floatAD()", delay)}</p><p><b>  </script></b></p><p><b>  </body></b></p><p><b>  </html></b></p><

69、p>  4.3 聊天室主界面模塊</p><p>  此界面由三個用戶輸入模塊、聊天信息顯示模塊和在線用戶列表等三個模塊組成,如圖4.3所示。</p><p>  圖4.3聊天室主窗體</p><p><b>  核心代碼:</b></p><p>  package net.chat;</p>&l

70、t;p>  import java.text.SimpleDateFormat;</p><p>  import java.sql.*;</p><p>  public class Message {</p><p>  private String chatRoom;</p><p>  private String msgFro

71、m; </p><p>  private String msgTo; </p><p>  private String chatAction;</p><p>  private String msgContent;</p><p>  private int secret; </p><p>  p

72、ublic void setChatRoom(String chatRoom)</p><p><b>  {</b></p><p>  this.chatRoom = chatRoom;</p><p><b>  }</b></p><p>  public void setMsgFrom(S

73、tring msgFrom)</p><p><b>  {</b></p><p>  this.msgFrom = msgFrom;</p><p><b>  }</b></p><p>  public void setMsgTo(String msgTo)</p><p

74、><b>  {</b></p><p>  this.msgTo = msgTo;</p><p><b>  }</b></p><p>  public void setChatAction(String chatAction)</p><p><b>  {</b>

75、;</p><p>  this.chatAction = chatAction;</p><p><b>  }</b></p><p>  public void setMsgContent(String msgContent)</p><p><b>  {</b></p>&l

76、t;p>  this.msgContent = msgContent;</p><p><b>  }</b></p><p>  public void setSecret(int secret)</p><p><b>  {</b></p><p>  this.secret = sec

77、ret;</p><p><b>  }</b></p><p>  public boolean saveToDataBase()throws SQLException,ClassNotFoundException</p><p><b>  {</b></p><p>  BaseConn co

78、nn = null;</p><p><b>  try</b></p><p><b>  {</b></p><p>  conn = new BaseConn();</p><p>  SimpleDateFormat cal = new SimpleDateFormat("yyyy

79、-MM-dd HH:mm:ss");</p><p>  String time = cal.format(new java.util.Date());</p><p>  String sql="insert into msgInfo(chatRoom,msgFrom,msgTo,chatTime,chatAction,msgContent,secret) value

80、s(?,?,?,?,?,?,?)";</p><p>  PreparedStatement ps = conn.preparedStatement(sql);</p><p>  ps.setString(1,chatRoom);</p><p>  ps.setString(2,msgFrom);</p><p>  ps.se

81、tString(3,msgTo);</p><p>  ps.setString(4,time);</p><p>  ps.setString(5,chatAction);</p><p>  ps.setString(6,msgContent);</p><p>  ps.setInt(7,secret);</p><

82、p>  conn.executeUpdate();</p><p>  sql = "update onlineUser set lastChatTime = ? where nickName=? and chatRoom= ?";</p><p>  ps = conn.preparedStatement(sql);</p><p>  

83、ps.setString(1,time);</p><p>  ps.setString(2,msgFrom);</p><p>  ps.setString(3,chatRoom);</p><p>  conn.executeUpdate();</p><p>  return true;</p><p>  }c

84、atch(SQLException ex)</p><p><b>  {</b></p><p>  ex.printStackTrace();</p><p><b>  throw ex;</b></p><p>  }catch(ClassNotFoundException ex)</

85、p><p><b>  {</b></p><p>  ex.printStackTrace();</p><p><b>  throw ex;</b></p><p><b>  }</b></p><p><b>  }</b>&

86、lt;/p><p><b>  }</b></p><p><b>  <html></b></p><p>  <%@include file="chkSession.jsp"%></p><p>  <%@ page language="j

87、ava" import="java.sql.*" pageEncoding="GB2312"%></p><p><b>  <head></b></p><p>  <script language="javascript"></p><p>

88、  //javascript函數(shù),每融2000毫秒(2秒)刷新一次頁面</p><p>  function GetData()</p><p><b>  {</b></p><p>  var timeoutid = setTimeout("window.location.reload()",2000)</p>

89、;<p><b>  }</b></p><p><b>  </script></b></p><p><b>  </head></b></p><p>  <body onload="GetData()"></p>

90、<p>  <jsp:useBean id="conn" class="net.chat.BaseConn" scope="page"/></p><p><b>  <%</b></p><p>  String msgString = "";</p

91、><p><b>  try</b></p><p><b>  {</b></p><p>  String sql = "select*from msgInfo where ID in(select top 30 ID from msgInfo where chatRoom=? Order by chatTime

92、 DESC) order by chatTime";</p><p>  String userName=session.getAttribute("_USER").toString();</p><p>  PreparedStatement ps = conn.preparedStatement(sql);</p><p>  ps

93、.setString(1,session.getAttribute("_CHAT_ROOM").toString());</p><p>  ResultSet rs = conn.executeQuery();</p><p>  //下面while循環(huán)里的程序就是實現(xiàn)控制聊天信息顯示格式的功能</p><p>  while(rs.next(

94、))</p><p><b>  { </b></p><p>  String msgFrom = rs.getString("msgFrom");//獲取聊天信息發(fā)送者</p><p>  String msgTo=rs.getString("msgTo");//獲取聊天信息接收者</p>

95、<p>  String action = rs.getString("chatAction");//獲取聊天表情</p><p>  String msgContent=rs.getString("msgContent");//獲取聊天信息內(nèi)容</p><p>  int secret = rs.getInt("secret

96、");//獲取是否悄悄話 </p><p>  //判斷是否系統(tǒng)公告</p><p>  if(msgFrom.equals("系統(tǒng)公告"))</p><p>  msgString=msgString+"<div>系統(tǒng)公告:"+msgContent+"</div>";&l

97、t;/p><p><b>  //判斷是否悄悄話</b></p><p>  else if(secret==0)</p><p><b>  {</b></p><p>  //判斷是否使用聊天表情</p><p>  if(action==null||action.equal

98、s("no"))</p><p>  msgString=msgString+"<div><font color=blue>"+msgFrom+"</font>對<font color=blue>"+msgTo+"</font></span>說:"+msgCont

99、ent+"</div>"; </p><p><b>  else</b></p><p>  msgString=msgString+"<div><font color=blue>"</p><p>  +msgFrom+"</font>&quo

100、t;+action.replaceAll("B","<font color=blue>"</p><p>  +msgTo+"</font>")+msgContent+"</div>";</p><p><b>  }</b></p>&l

101、t;p>  //如果是悄悄話只在發(fā)送者和接收者的頁面中顯示</p><p>  else if(msgFrom.equals(userName)||msgTo.equals(userName))</p><p><b>  {</b></p><p>  if(action==null||action.equals("no&qu

102、ot;))</p><p>  msgString=msgString+"<div><font color=red>[悄悄話]</font><font color=blue>"</p><p>  +msgFrom+"</font>對<font color=blue>"+msgT

103、o+"</font></span>說:"</p><p>  +msgContent+"</div>";</p><p><b>  else</b></p><p>  msgString=msgString+"<div><font col

104、or=red>[悄悄話]</font><font color=blue>"</p><p>  +msgFrom+"</font>"+action.replaceAll("B","<font color=blue>"</p><p>  +msgTo+"&l

105、t;/font>")+msgContent+"</div>";</p><p><b>  } </b></p><p><b>  }</b></p><p>  }catch(Exception ex)</p><p><b>  {&

106、lt;/b></p><p>  ex.printStackTrace();</p><p>  out.println("系統(tǒng)維護");</p><p><b>  }finally</b></p><p><b>  {</b></p><p>

107、  conn.closeDB();</p><p><b>  }</b></p><p><b>  %></b></p><p>  <script language="javascript"></p><p>  parent.loadContent.in

108、nerHTML="<%=msgString%>";</p><p>  parent.location.hash="position";</p><p><b>  </script></b></p><p><b>  </body></b>&l

109、t;/p><p><b>  </html></b></p><p><b>  <HTML></b></p><p><b>  <HEAD></b></p><p>  <%@ page language="java"

110、; contentType="text/html; charset=GB2312"</p><p>  pageEncoding="GB2312"</p><p><b>  %></b></p><p>  <%@include file="chkSession.jsp"

111、%></p><p>  <META http-equiv="Content-Type" content="text/html; charset=GB2312"></p><p>  <%@page import="java.sql.*"%></p><p>  <jsp

112、:useBean id="conn" class="net.chat.BaseConn" scope="page"/></p><p>  <jsp:useBean id="list" class="net.chat.ChatRoomList" scope="page"/> &

113、lt;/p><p>  <jsp:useBean id="chatRoomObj" class="net.chat.ChatRoom"/></p><p>  <meta http-equiv="Content-Type" content="text/html; charset=gb2312"&g

114、t;</p><p>  <!-- 在這里設置,每8秒鐘刷新一次頁面--></p><p>  <META http-equiv="refresh" content="8"></p><p>  <script language="JavaScript" type="

115、"></p><p>  //javascript函數(shù),實現(xiàn)用戶選擇特定聊天用戶發(fā)送消息</p><p>  function PerformSubmit(user) {</p><p>  parent.inputFrame.chatForm.msgTo.value=user;</p><p>  return false;

116、</p><p><b>  }</b></p><p><b>  </script></b></p><p><b>  </HEAD></b></p><p>  <BODY bgcolor="#FF9900" >&

117、lt;/p><p><b>  <%</b></p><p>  //檢查當前用戶是否已經(jīng)被踢出聊天室,如果已經(jīng)被踢出聊天室后面程序不再執(zhí)行</p><p>  if(chatRoomObj.denyUser(session.getAttribute("_USER").toString(),</p><

118、p>  session.getAttribute("_CHAT_ROOM").toString()))</p><p><b>  {</b></p><p>  out.println("<script>alert(\"對不起,你已經(jīng)被踢出本聊天室\")</script>");

119、</p><p>  out.println("<script>parent.document.location.href='chatRoomList.jsp'</script>");</p><p>  //response.sendRedirect("chatRoomList.jsp");</p>

120、;<p><b>  return; </b></p><p><b>  }</b></p><p>  String userName =session.getAttribute("_USER").toString();</p><p>  //斷用戶是否已經(jīng)和聊天室斷開連接</

121、p><p>  if (userName == null) {</p><p>  out.println("<script>alert(\"你已經(jīng)和聊天室斷開\")</script>");</p><p>  out.println("<script>parent.document.

122、location.href='login.jsp'</script>");</p><p><b>  return;</b></p><p><b>  }</b></p><p>  String chatRoom =(String)session.getAttribute(&

123、quot;_CHAT_ROOM").toString();</p><p><b>  %></b></p><p>  <font color="#0000ff">在線人員</font></p><p>  [<font color="#ff0000">

124、; <%=list.countUser(chatRoom)%></font>]</p><p>  <a href="#" onClick=PerformSubmit("所有人")>所有人</a><br></p><p><b>  <%</b></p>

125、;<p><b>  try</b></p><p><b>  {</b></p><p>  //獲取當前聊天房間中的所有用戶列表</p><p>  String sql="select * from onlineUser where chatRoom='"+session.

126、getAttribute("_CHAT_ROOM")+"'";</p><p>  ResultSet rs = conn.executeQuery(sql);</p><p>  while(rs.next())</p><p><b>  {</b></p><p>&

127、lt;b>  %></b></p><p>  [<a href="#" class="l1" onClick=PerformSubmit("<%=rs.getString("nickName")%>")></p><p>  <%=rs.getStri

128、ng("nickName")%></a>]<br></p><p><b>  <%</b></p><p><b>  }</b></p><p>  }catch(Exception ex)</p><p><b>  {<

129、/b></p><p>  out.println("數(shù)據(jù)庫維護");</p><p><b>  }finally</b></p><p><b>  {</b></p><p><b>  } </b></p><p>&

130、lt;b>  %></b></p><p><b>  </BODY></b></p><p><b>  </HTML></b></p><p>  4.4 管理員高級管理功能界面</p><p>  如果是管理員登錄,則可通過高級功能進入高級管理界

131、面,可以實現(xiàn)踢人、刪除用戶以及查看所有用戶的功能,如圖4.4所示</p><p>  圖4.4管理員高級管理界面</p><p>  核心代碼: <%@ page language="java" import="java.sql.*" pageEncoding="UTF-8"%></p><p

132、>  <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"></p><p><b>  <html></b></p><p><b>  <head></b></p><p>  <

133、title>高級管理頁面</title></p><p>  <script language="javascript"></p><p>  //javascript函數(shù),實現(xiàn)踢人功能</p><p>  function kick()</p><p><b>  {</b&

134、gt;</p><p>  document.form1.action="kick.jsp"; </p><p>  document.form1.submit();</p><p><b>  }</b></p><p>  //javascript函數(shù),實現(xiàn)刪除用戶功能</p&g

135、t;<p>  function del()</p><p><b>  {</b></p><p>  document.form1.action="delete.jsp";</p><p>  document.form1.submit();</p><p><b>  }

136、</b></p><p>  //javascript函數(shù),實現(xiàn)列出所有注冊會員列表</p><p>  function list()</p><p><b>  {</b></p><p>  document.location.href="advanced.jsp?list=true"

137、;;</p><p><b>  }</b></p><p><b>  </script></b></p><p>  <jsp:useBean id="chatRoom" class="net.chat.ChatRoom"/></p><

138、;p>  <jsp:useBean id="conn" class="net.chat.BaseConn"/></p><p><b>  </head> </b></p><p><b>  <body></b></p><p><

139、b>  <%</b></p><p><b>  try</b></p><p><b>  {</b></p><p>  //檢查用戶是否管理員用戶,如果是管理員用戶才執(zhí)行下面代碼</p><p>  if(chatRoom.checkAdmin(session.get

140、Attribute("_USER").toString()))</p><p><b>  {</b></p><p><b>  %></b></p><p>  <form method="post" name="form1" target=&qu

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論