版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 《Web開發(fā)》</b></p><p><b> 課程設(shè)計(jì)報(bào)告</b></p><p> (2011— 2012學(xué)年 第 2 學(xué)期)</p><p> 題 目: 聊 天 室 </p><p> 專 業(yè): 計(jì)算機(jī)網(wǎng)絡(luò)
2、技術(shù) </p><p> 班 級(jí): </p><p> 姓名學(xué)號(hào): xxx(1007052139) </p><p> 指導(dǎo)教師: </p><p> 成 績(jī):
3、 </p><p><b> 目 錄</b></p><p><b> 目 錄II</b></p><p><b> 1 概 述1</b></p><p> 1.1 設(shè)計(jì)目標(biāo)1</p><p> 1.
4、2 項(xiàng)目規(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ù)庫(kù)表設(shè)計(jì)4
5、 </p><p> 3 系統(tǒng)總體設(shè)計(jì)6</p><p><b> 3.1系統(tǒng)結(jié)構(gòu)6</b></p><p> 4系統(tǒng)功能模塊實(shí)現(xiàn)7</p><p> 4.1 登錄和注冊(cè)界面模塊7</p><p> 4.2 選擇聊天室界面模塊10</p><p&g
6、t; 4.3 聊天室主界面模塊12</p><p> 4.4 用管理員高級(jí)功能管理模塊20</p><p><b> 5 調(diào)試分析28</b></p><p><b> 6心得體會(huì)29</b></p><p><b> 致 謝30</b></p>
7、<p> 參 考 文 獻(xiàn)31</p><p><b> 1 概 述</b></p><p><b> 1.1 設(shè)計(jì)目標(biāo)</b></p><p> 從功能角色上來(lái)講,在線聊天室可以有兩種類型的用戶,普通用戶和管理員。</p><p> 其中,普通用戶在登錄后,可以選擇性的進(jìn)
8、入不同的聊天室,并通過(guò)聊天界面,向一人或多人發(fā)送聊天消息,進(jìn)行聊天交流。如果是第一次進(jìn)入到該聊天室,還可以通過(guò)本模塊提供的注冊(cè)功能,提交注冊(cè)信息,成為本聊天室的用戶。</p><p> 管理員在登陸后,除了可以聊天外,還可以擁有各種管理的權(quán)限,比如查看所有在線用戶信息,還可以把一些不遵守聊天規(guī)則的用戶趕出聊天室,甚至從數(shù)據(jù)庫(kù)里把一些惡意聊天用戶除名。</p><p><b>
9、 1.2 項(xiàng)目規(guī)劃</b></p><p> 本聊天室需要提供如下的界面和功能。</p><p> 1、需要提供支持用戶登陸以及身份驗(yàn)證的WEB界面和實(shí)現(xiàn)后臺(tái)對(duì)應(yīng)功能的模塊。在這個(gè)模塊中,能根據(jù)登入者擁有的權(quán)限,分別開放不同的權(quán)限。</p><p> 2、需要一個(gè)支持用戶注冊(cè)的界面和對(duì)應(yīng)的后臺(tái)模塊。</p><p> 3
10、、需要為普通用戶和管理員提供一個(gè)瀏覽所有聊天室的界面和對(duì)應(yīng)后臺(tái)功能模塊。在這個(gè)界面中,用戶可以選擇性的進(jìn)入不同的聊天室。</p><p> 4、需要為普通用戶和管理員提供一個(gè)支持多人聊天的界面和對(duì)應(yīng)的后臺(tái)模塊。在這個(gè)界面中用戶和管理員可以選擇聊天對(duì)象,也可以想聊天對(duì)象發(fā)送信息。</p><p> 5、需要為管理員提供一個(gè)查詢所有用戶的界面和對(duì)應(yīng)的功能模塊,這個(gè)界面其實(shí)就是管理員實(shí)現(xiàn)其管
11、理功能的界面,在這個(gè)界面里,管理員可以實(shí)現(xiàn)“趕人”的功能,也可以實(shí)現(xiàn)“刪除聊天用戶”的動(dòng)作。</p><p> 1.3 開發(fā)工具的選擇 </p><p> JSP(JavaServer Pages)是由Sun Microsystems公司倡導(dǎo)、許多公司參與一起建立的一種動(dòng)態(tài)網(wǎng)頁(yè)技術(shù)標(biāo)準(zhǔn)。JSP技術(shù)有點(diǎn)類似ASP技術(shù),它是在傳統(tǒng)的網(wǎng)頁(yè)HTML文件(*.htm,*.html)中插入Jav
12、a程序段(Scriptlet)和JSP標(biāo)記(tag),從而形成JSP文件(*.jsp)。用JSP開發(fā)的Web應(yīng)用是跨平臺(tái)的,即能在Linux下運(yùn)行,也能在其他操作系統(tǒng)上運(yùn)行。 </p><p> JSP技術(shù)使用Java編程語(yǔ)言編寫類XML的tags和scriptlets,來(lái)封裝產(chǎn)生動(dòng)態(tài)網(wǎng)頁(yè)的處理邏輯。網(wǎng)頁(yè)還能通過(guò)tags和 scriptlets訪問(wèn)存在于服務(wù)端的資源的應(yīng)用邏輯。JSP將網(wǎng)頁(yè)邏輯與網(wǎng)頁(yè)
13、設(shè)計(jì)和顯示分離,支持可重用的基于組件的設(shè)計(jì),使基于Web的應(yīng)用程序的開發(fā)變得迅速和容易。Web服務(wù)器在遇到訪問(wèn)JSP網(wǎng)頁(yè)的請(qǐng)求時(shí),首先執(zhí)行其中的程序段,然后將執(zhí)行結(jié)果連同JSP文件中的HTML代碼一起返回給客戶。JSP與Java Servlet一樣,是在服務(wù)器端執(zhí)行的,通常返回該客戶端的就是一個(gè)HTML文本,因此客戶端只要有瀏覽器就能瀏覽。JSP的1.0規(guī)范的最后版本是1999年9月推出的,12月又推出了1.1規(guī)范。目前較新的是JSP1
14、.2規(guī)范,JSP2.0規(guī)范的征求意見稿也已出臺(tái)。</p><p> JSP頁(yè)面由HTML代碼和嵌入其中的Java代碼所組成。服務(wù)器在頁(yè)面被客戶端請(qǐng)求以后對(duì)這些Java代碼進(jìn)行處理,然后將生成的HTML頁(yè)面返回給客戶端的瀏覽器。Java Servlet 是JSP的技術(shù)基礎(chǔ),而且大型的Web應(yīng)用程序的開發(fā)需要Java Servlet和JSP配合才能完成。</p><p><b>
15、 JSP的優(yōu)勢(shì)</b></p><p> (1)一次編寫,到處運(yùn)行。在這一點(diǎn)上Java比PHP更出色,除了系統(tǒng)之外,代碼不用做任何更改。</p><p> ?。?)系統(tǒng)的多平臺(tái)支持?;旧峡梢栽谒衅脚_(tái)上的任意環(huán)境中開發(fā),在任意環(huán)境中進(jìn)行系統(tǒng)部署,在任意環(huán)境中擴(kuò)展。相比ASP/PHP的局限性是顯而易見的。</p><p> ?。?)強(qiáng)大的可伸縮性。從只
16、有一個(gè)小的Jar文件就可以運(yùn)行Servlet/JSP,到由多臺(tái)服務(wù)器進(jìn)行集群和負(fù)載均衡,到多臺(tái)Application進(jìn)行事務(wù)處理,消息處理,一臺(tái)服務(wù)器到無(wú)數(shù)臺(tái)服務(wù)器,Java顯示了一個(gè)巨大的生命力。</p><p> ?。?)多樣化和功能強(qiáng)大的開發(fā)工具支持。這一點(diǎn)與ASP很像,Java已經(jīng)有了許多非常優(yōu)秀的開發(fā)工具,而且許多可以免費(fèi)得到,并且其中許多已經(jīng)可以順利的運(yùn)行于多種平臺(tái)之下。</p><
17、;p><b> 2 需求分析</b></p><p><b> 2.1 需求分析</b></p><p> 21世紀(jì)是網(wǎng)絡(luò)的時(shí)代,Internet的普及已經(jīng)影響了傳統(tǒng)的交流方式。網(wǎng)絡(luò)聊天室系統(tǒng)是計(jì)算機(jī)網(wǎng)絡(luò)發(fā)展的產(chǎn)物,是最為常見、最受廣大互聯(lián)網(wǎng)使用者所認(rèn)可的基于Web的網(wǎng)絡(luò)應(yīng)用系統(tǒng)。隨著互聯(lián)網(wǎng)的發(fā)展,人們通過(guò)網(wǎng)絡(luò)可以更方便快捷地進(jìn)行信
18、息交流和學(xué)習(xí),聊天系統(tǒng)可以為大家提供一個(gè)更好的交流平臺(tái),在這個(gè)平臺(tái)上,人們可以通過(guò)文字與符號(hào)進(jìn)行實(shí)時(shí)的交談、聊天,它是一個(gè)向整個(gè)因特網(wǎng)開放的地方,是提供給網(wǎng)民一個(gè)交友與娛樂(lè)的場(chǎng)所,在聊天室里網(wǎng)民可選擇自已的聊天對(duì)象,與其進(jìn)行對(duì)話交流,是網(wǎng)民之間相互溝通、交流情感的最佳方式之一。</p><p> 從傳播方式上講, 聊天室傳播是非線性傳播。非線形傳播指聊天室傳播的信息是為無(wú)數(shù)的共享空間的網(wǎng)絡(luò)用戶所發(fā)出的, 任何擁
19、有網(wǎng)絡(luò)傳播權(quán)利的人都可以得到, 網(wǎng)絡(luò)打破了傳統(tǒng)媒體單向傳送信息的格局, 信息傳播者與接收者之間的互動(dòng)變得切實(shí)可行。從傳播的信息內(nèi)涵上講, 聊天室的消息結(jié)構(gòu)是無(wú)中心的。聊天室所給受 眾帶來(lái)的信息與感受作為一種現(xiàn)代生活資源, 在實(shí)現(xiàn)了從傳統(tǒng)大眾傳播的單向傳播向多向傳播的轉(zhuǎn)變后, 極大地拓展了現(xiàn)代生活空間, 使傳播者與受眾之間的直接連通成為可能。這一轉(zhuǎn)變使整個(gè)傳播結(jié)構(gòu)與傳播效果發(fā)生了巨大變化, 是傳統(tǒng)媒體無(wú)法比擬的。</p>&
20、lt;p> 根據(jù)CNNIC 發(fā)布的第十五次中國(guó)互聯(lián)網(wǎng)絡(luò)發(fā)展?fàn)顩r統(tǒng)計(jì)報(bào)告, 有3.5%的商業(yè)網(wǎng)站提供網(wǎng)絡(luò)聊天。熱衷于網(wǎng)上聊天的人群大部分集中于16~24 年齡段上, 經(jīng)濟(jì)上沒(méi)有獨(dú)立, 又缺乏網(wǎng)上支付手段的特點(diǎn)也是聊天室不為商業(yè)網(wǎng)站看好的重要理由之一。目前經(jīng)營(yíng)商獲得收益的渠道有兩條: 在線廣告和電子商務(wù)。青少年在經(jīng)濟(jì)上沒(méi)有自立, 經(jīng)營(yíng)商通常很難通過(guò)電子商務(wù)獲得收入; 而在在線廣告方面, 各商業(yè)網(wǎng)站目前的廣告客戶主要目標(biāo)人群鎖定中、高
21、收入的白領(lǐng)階層, 面向青少年消費(fèi)市場(chǎng)的網(wǎng)上廣告幾乎沒(méi)有, 無(wú)法通過(guò)網(wǎng)上廣告獲得收益。因此, 對(duì)于青少年聚集的網(wǎng)上聊天室, 網(wǎng)絡(luò)公司自然沒(méi)有太高的熱情。 實(shí)際上, 青少年的消費(fèi)市場(chǎng)一向是規(guī)模可觀、利潤(rùn)豐厚的一塊大蛋糕。無(wú)論流行音樂(lè)、新潮服飾、娛樂(lè)場(chǎng)所, 青少年消費(fèi)都是其中的主力。論市場(chǎng)規(guī)模, 全國(guó)青少年消費(fèi)市場(chǎng)的總規(guī)模不低于一千億。我們看到, 并非聊天的人群本身缺乏商業(yè)價(jià)值, 而是目前沒(méi)有好的辦法將這種價(jià)值加以發(fā)掘。在線廣告理應(yīng)成為聊天室
22、獲得商業(yè)收益的主要手段。</p><p> 隨著研發(fā)技術(shù)的進(jìn)步,qq.msn等聊天軟件的面世,取代了聊天室。同時(shí),聊天室內(nèi)用戶過(guò)激,不法等言辭,也是聊天室逐漸沒(méi)落的原因。但是,聊天軟件的局限性,不比聊天室開放性強(qiáng),面向廣。只有真正了解聊天室的主要使用人群, 才能更好地設(shè)置聊天室的主題、話題、頁(yè)面風(fēng)格等。要重視聊天室產(chǎn)品的氛圍經(jīng)濟(jì)效益, 可以成為各種汽車俱樂(lè)部、攀巖俱樂(lè)部、自行車俱樂(lè)部等的合作伙伴, 吸引更多會(huì)員
23、,成為網(wǎng)上會(huì)所。聊天室還應(yīng)注意自身形象的塑造, 只有個(gè)性化、特色化才能使聊天室產(chǎn)品脫穎而出。要注意適當(dāng)?shù)膹V告宣傳。在以上的種種因素下,本課題的研究方向就是運(yùn)用JSP技術(shù)營(yíng)造一個(gè)簡(jiǎn)單,友好的網(wǎng)絡(luò)聊天室,為互聯(lián)網(wǎng)使用者提供學(xué)習(xí),討論和交流的平臺(tái)。</p><p> 2.2 數(shù)據(jù)庫(kù)表設(shè)計(jì)</p><p> 在ChatRoom數(shù)據(jù)庫(kù)中建一個(gè)名為userinfo的表,如表3.2所示。</
24、p><p> 表3.2userinfo數(shù)據(jù)表 </p><p> 在ChatRoom數(shù)據(jù)庫(kù)中新建一個(gè)名為msginfo的表,用來(lái)保存聊天信息。在顯示聊天記錄時(shí),可以通過(guò)查詢語(yǔ)句對(duì)不同的用戶顯示不同的信息。如表3.3所示。</p><p> 表3.3msginfo表 </p><p> 在ChatRoom數(shù)據(jù)庫(kù)表中新建一個(gè)名為onlineU
25、ser的表,用來(lái)保存在線用戶信息。如表3.4所示。</p><p> 表3.4 onlineUser表</p><p><b> 3 系統(tǒng)總體設(shè)計(jì)</b></p><p><b> 3.1系統(tǒng)結(jié)構(gòu)</b></p><p> 本系統(tǒng)將分為四大模塊,即數(shù)據(jù)庫(kù)通用模塊、用戶登錄與注冊(cè)模塊、聊天主
26、模塊、管理員模塊,具體描述如表3.1所示。</p><p> 表3.1 系統(tǒng)結(jié)構(gòu)表</p><p><b> 4系統(tǒng)功能模塊實(shí)現(xiàn)</b></p><p> 4.1 登錄和注冊(cè)界面模塊</p><p> 登錄界面模塊是通過(guò)訪問(wèn)數(shù)據(jù)庫(kù)中的userinfo表中的Name和Password兩個(gè)字段來(lái)判斷用戶名和密碼是否匹
27、配,如果匹配就登入成功,否則登入失敗,如果用戶是第一次登錄該聊天室,則自動(dòng)注冊(cè)。如圖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> 如果登錄成功則進(jìn)入選擇聊天室界面的模塊,如圖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、戶選擇一個(gè)聊天房間提交給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、<%//這里通過(guò)javaBean組件獲取每個(gè)聊天室房間的在線人數(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="進(jìn)入"></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> 此界面由三個(gè)用戶輸入模塊、聊天信息顯示模塊和在線用戶列表等三個(gè)模塊組成,如圖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秒)刷新一次頁(yè)面</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)里的程序就是實(shí)現(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>對(duì)<font color=blue>"+msgTo+"</font></span>說(shuō):"+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ā)送者和接收者的頁(yè)面中顯示</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>對(duì)<font color=blue>"+msgT
103、o+"</font></span>說(shuō):"</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)維護(hù)");</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> <!-- 在這里設(shè)置,每8秒鐘刷新一次頁(yè)面--></p><p> <META http-equiv="refresh" content="8"></p><p> <script language="JavaScript" type="
115、"></p><p> //javascript函數(shù),實(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> //檢查當(dāng)前用戶是否已經(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(\"對(duì)不起,你已經(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> //獲取當(dāng)前聊天房間中的所有用戶列表</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ù)庫(kù)維護(hù)");</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 管理員高級(jí)管理功能界面</p><p> 如果是管理員登錄,則可通過(guò)高級(jí)功能進(jìn)入高級(jí)管理界
131、面,可以實(shí)現(xiàn)踢人、刪除用戶以及查看所有用戶的功能,如圖4.4所示</p><p> 圖4.4管理員高級(jí)管理界面</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>高級(jí)管理頁(yè)面</title></p><p> <script language="javascript"></p><p> //javascript函數(shù),實(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ù),實(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ù),實(shí)現(xiàn)列出所有注冊(cè)會(huì)員列表</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. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- web課程設(shè)計(jì)—— 聊天室
- jsp課程設(shè)計(jì)報(bào)告--在線聊天室
- 軟件課程設(shè)計(jì)報(bào)告---簡(jiǎn)易網(wǎng)絡(luò)聊天室
- java課程設(shè)計(jì)--聊天室系統(tǒng)
- java網(wǎng)絡(luò)聊天室課程設(shè)計(jì)
- java課程設(shè)計(jì)---聊天室系統(tǒng)
- tcp課程設(shè)計(jì)--網(wǎng)絡(luò)聊天室
- mfc課程設(shè)計(jì)報(bào)告---聊天室程序設(shè)計(jì)
- 聊天室課程設(shè)計(jì)---聊天程序的設(shè)計(jì)和實(shí)現(xiàn)
- java課程設(shè)計(jì)之簡(jiǎn)單聊天室
- 網(wǎng)絡(luò)編程課程設(shè)計(jì)---網(wǎng)絡(luò)聊天室
- 網(wǎng)絡(luò)編程課程設(shè)計(jì)-java聊天室
- java課程設(shè)計(jì)報(bào)告---利用java實(shí)現(xiàn)簡(jiǎn)單聊天室
- 網(wǎng)絡(luò)編程課程設(shè)計(jì)報(bào)告-android_socket_聊天室
- 基于web的聊天室開題報(bào)告
- 基于web的聊天室開題報(bào)告
- 網(wǎng)絡(luò)編程課程設(shè)計(jì)報(bào)告--基于linux網(wǎng)絡(luò)聊天室設(shè)計(jì)
- java課程設(shè)計(jì)---java聊天室的系統(tǒng)的設(shè)計(jì)與開發(fā)
- 軟件工程課程設(shè)計(jì)--- 文本聊天室
- vc++課程設(shè)計(jì)--聊天室程序設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論