畢業(yè)設計---基于bs模式即時通訊軟件的設計與實現(xiàn)_第1頁
已閱讀1頁,還剩33頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p><b>  畢業(yè)設計(論文)</b></p><p>  基于B/S模式即時通訊軟件的設計與實現(xiàn)</p><p>  Design and Implementation of Network Chatting System Based on B/S Model</p><p>  學生姓名

2、 </p><p>  學 號 </p><p>  專業(yè)班級 網(wǎng)絡工程0801</p><p>  指導教師 </p><p><b>  2012年5月</b></p><p><b>  摘 要&

3、lt;/b></p><p>  即時通訊Instant Messaging是目前Internet上最為流行的通訊方式,而各種各樣的即時通訊軟件也層出不窮;服務提供商也提供了越來越豐富的通訊服務功能。隨著互聯(lián)網(wǎng)的發(fā)展,即時通訊的運用將日益廣泛,即時通訊軟件業(yè)方興未艾。</p><p>  此系統(tǒng)是基于B/S的模式的即時通訊系統(tǒng),通過IE等瀏覽器直接完成客戶端的登錄、數(shù)據(jù)傳輸,使用JA

4、VA語句開發(fā),使用Eclipse工具,數(shù)據(jù)庫方面用Mysql數(shù)據(jù)庫管理軟件,通過JDBC連接,便捷了用戶之間的通訊和交友。</p><p>  在系統(tǒng)設計與建模過程中,是以JSP開發(fā)的經(jīng)典MVC三層開發(fā)模式來開發(fā)的。本即時通訊軟件系統(tǒng)共由四個模塊組成:登錄模塊,驗證模塊,在線查找模塊和聊天模塊。登錄模塊實現(xiàn)系統(tǒng)通過驗證用戶名和密碼進行登錄,驗證模塊實現(xiàn)對用戶的校驗和認證。在線查找模塊采用Java Applet小程

5、序技術,嵌入在html文檔中在瀏覽器中運行,實現(xiàn)用戶個人信息的管理,即時消息的發(fā)送與接受。通信模塊采用Java編寫,實現(xiàn)即時消息的轉(zhuǎn)發(fā)與離線信息保存。</p><p>  關鍵詞:B/S;JSP;IM;即時通訊</p><p><b>  Abstract</b></p><p>  Instant Messaging is now Insta

6、nt communication on the Internet the most popular method of communication, and all kinds of Instant Messaging software also emerge in endlessly; Service providers also provide more and more rich communication service fun

7、ctions. With the development of the Internet, the use of instant communication will be more widely, instant messaging software is in the ascendant.</p><p>  The system is based on B/S model of instant messag

8、ing system, through the IE, the client browser done directly login, data transmission, use JAVA statement development, use Eclipse tools, database with Mysql database management software, through the JDBC connection, con

9、venient communications between the user and making friends.</p><p>  In system design and modeling process, is based on JSP development of the classic MVC three layer development model to development. This i

10、nstant messaging software system altogether by four modules: login module, validation module, online search module and chat module. Login module implements system through the authentication user name and password to logi

11、n, validation to the user module implements calibration and authentication. Online search module USES Java Applet small program technology, em</p><p><b>  目 錄</b></p><p><b>  

12、第1章 緒論1</b></p><p>  1.1國內(nèi)外的即時通信軟件發(fā)展趨勢1</p><p>  1.2本論文的研究內(nèi)容2</p><p>  第2章 系統(tǒng)的開發(fā)環(huán)境及工具簡介4</p><p>  2.1 開發(fā)環(huán)境4</p><p>  2.2 開發(fā)工具介紹4</p><

13、;p>  2.2.1 Java簡介4</p><p>  2.2.2 Applet簡介5</p><p>  2.2.3 JSP簡介5</p><p>  2.2.4 JDBC簡介6</p><p>  2.2.5 MySQL簡介6</p><p>  2.3 MVC三層模塊結(jié)構(gòu)7</p>

14、<p>  2.3.1 view層7</p><p>  2.3.2 control 層8</p><p>  2.3.3 model 層8</p><p>  第3章 功能需求分析9</p><p>  3.1 總體需求概述9</p><p>  3.2詳細功能需求介紹9</p>

15、<p>  3.2.1 登錄模塊9</p><p>  3.2.2 驗證模塊10</p><p>  3.2.3 在線查找模塊10</p><p>  3.2.4 聊天模塊11</p><p>  3.3 MySQL與JSP、Java的連接12</p><p>  第4章 后臺數(shù)據(jù)庫的設計1

16、4</p><p>  4.1數(shù)據(jù)庫表的設計14</p><p>  4.1.1 users表15</p><p>  4.1.2 records表15</p><p>  4.1.3 online表15</p><p>  4.1.4 數(shù)據(jù)庫層16</p><p>  4.1.5 模

17、型層17</p><p>  第5章 系統(tǒng)詳細實現(xiàn)19</p><p>  5.1 流程示意圖19</p><p>  5.2 各個模塊的實現(xiàn)19</p><p>  5.2.1 登錄頁面20</p><p>  5.2.2 聊天頁面21</p><p>  5.2.3 查看在線用戶

18、23</p><p>  5.2.4 服務器端的顯示25</p><p><b>  結(jié) 論26</b></p><p><b>  致謝27</b></p><p><b>  參考文獻28</b></p><p><b>  第1

19、章 緒論</b></p><p>  即時通訊軟件,幾乎是每一個上網(wǎng)用戶都必備的聯(lián)絡工具。即時通訊軟件除了能夠讓您迅速地在網(wǎng)上找到自己的朋友和工作伙伴,還可以實時交談和傳遞信息,而且,現(xiàn)在不少即時通訊軟件還集成了文件共享、語音聊天、網(wǎng)絡會議等功能。截止到目前,全球約有近3億多人使用即時通訊軟件進行交流,正因為即時通訊軟件擁有數(shù)以億計的用戶和迅速增長的市場,所以各個公司都盯上了中國這個潛在的最大市場,一

20、時間,即時通訊市場硝煙四起。</p><p>  1.1國內(nèi)外的即時通信軟件發(fā)展趨勢</p><p>  即時通訊軟件最早發(fā)布于1996年11月15日,以色列特拉維文的Mirabilis Ltd.發(fā)表了一個題為《E.T SURF HOME:MIRABILIS LTD. PROVIDES NEW SOLUTIONS FOR PEER-TO-PEER INTERNET COMMUNICATIO

21、NS》的新聞稿,同時發(fā)布了他們新產(chǎn)品ICQ(I Seek You)的Beta測試版。這天標志著Internet上的第一個成熱的即時通訊系統(tǒng)(Instant Message System)的誕生。即時通訊服務在誕生之后的幾年時間得到了迅猛發(fā)展,成為新增Internet用戶的3個主要應用之一(WEB,電子郵件和即時通訊)。</p><p>  在國內(nèi),1999年2月,深圳騰訊公司正式發(fā)布OICQ99 beta bui

22、ld 0210,開通騰訊即時通訊服務。2000年5月,騰訊QQ同時在線用戶突破10萬;2001年2月l0日,騰訊QQ同時在線用戶突破100萬。2004年4月份騰訊QQ同時在線人數(shù)最高記錄已經(jīng)突破了600萬大關,現(xiàn)在騰訊公司正在把即時通訊系統(tǒng)往移動通訊方向擴展,如今已經(jīng)將即時通訊與手機短信息(SMS)成功結(jié)合起來。即時通訊軟件涉及和影響的領域已近越來越廣,其競爭也越來越激烈。國內(nèi)QQ最大的敵手朗瑪UC從2001年開始研發(fā),2002年的12

23、月份UC正式發(fā)布,并且首創(chuàng)了很多技術:UC是國內(nèi)第一個做場景聊天的;UC是第一個把同學錄和校友錄結(jié)合的;第一個把即時通訊與休閑游戲相結(jié)合的;第一個把發(fā)送動畫與即時通訊相結(jié)合的。在一年的發(fā)展里,UC一度達到峰值在線30萬人,注冊用戶達到7000萬。</p><p>  但是縱觀這些即時通訊軟件業(yè),都是基于C/S模式的,需要下載客戶端進行安裝,用戶名、密碼、聊天記錄等也是存放在本地機器上,在安全性和方便性上都有所欠缺

24、。設計并開發(fā)一個基于WEB的即時通訊平臺,對于現(xiàn)階段的學習和研究,都是極為有意義的,基于這個前提和起因.</p><p>  然而在眾多的即時通信軟件中很少有服務提供商同時對Windows、Linux或者Mac操作系統(tǒng)提供支持。拋開市場因素,絕大多數(shù)的即時通信軟件都是基于C/S(客戶/服務器)方式的,這種的方式不利于軟件跨平臺移植,很容易出現(xiàn)兼容性的問題,而且在C/S方式下臃腫的客戶端也越來越成為眾矢之的。與其不

25、同的是,B/S方式統(tǒng)一了客戶端,將系統(tǒng)功能實現(xiàn)的核心部分集中到服務器上,簡化了系統(tǒng)的開發(fā)、維護和使用??蛻魴C上只要有一個瀏覽器(Browser),如Netscape,IE,F(xiàn)irefox或Opera,而不需要考慮用戶使用了哪一種操作系統(tǒng)。因此使用B/S方式開發(fā)即時通信軟件是解決不同操作系統(tǒng)用戶之間進行即時通信障礙的有效途徑之一。</p><p>  開發(fā)基于B/S方式的即時通信軟件具有相當重要的現(xiàn)實意義,它可以實

26、現(xiàn)不同操作系統(tǒng)用戶之間無障礙的交流,免除了下載安裝客戶端的步驟,給用戶一個更加輕便的方式進行溝通。另外,基于B/S方式的即時通信軟件也可以作為企業(yè)客戶服務部門的一個重要組成部分,使用它可以縮短客戶與企業(yè)間的交流成本,提高企業(yè)的反應速度更好地為客戶服務。</p><p>  1.2本論文的研究內(nèi)容</p><p>  基于以上考慮,本系統(tǒng)需要提供一套完整的用戶管理系統(tǒng),實現(xiàn)用戶的注冊、登錄以

27、及個人信息的管理;一個簡單易用友好的系統(tǒng)即便是入門級的用戶也可以輕易掌握客戶端界面;一個強大快捷提供數(shù)據(jù)包轉(zhuǎn)發(fā)與轉(zhuǎn)存的服務器端方便了用戶的使用。</p><p>  要實現(xiàn)基于B/S方式的即時通信軟件就需要選擇一套與互聯(lián)網(wǎng)聯(lián)系密切的開發(fā)環(huán)境。選擇Tomcat做Web服務器實現(xiàn)對用戶的管理。這樣的選擇有不僅能有效的發(fā)揮軟件強大的網(wǎng)絡功能,還可以極大的節(jié)約開發(fā)成本。</p><p>  同樣的

28、,基于B/S方式的即時通訊系統(tǒng)需要做到多平臺兼容,就必須要選擇一個能在任意系統(tǒng)上都可以運行的開發(fā)軟件,而Java號稱“一次編譯,處處運行”自然是開發(fā)工具中的首選。</p><p>  但并不是所有問題都有簡單明顯的解決方法,事實上,許多問題不可能在預定的系統(tǒng)規(guī)模之內(nèi)解決。如果問題沒有可行的解,那么花費在這項開發(fā)工程上的任何時間、資源、人力和經(jīng)費都是無謂的浪費。由于開發(fā)軟件所需資源缺乏和交付時間限制的困擾,使得計算

29、機軟件的開發(fā)變得比較困難。</p><p>  由于采用了基于B/S方式的結(jié)構(gòu),必定會對客戶端有一定的限制(只能在瀏覽器內(nèi)運行)。考慮到這一點,可以選擇使用Java Applet和socket技術進行設計。Java Applet可以為本即時通信軟件提供一個易用的客戶端界面;通過socket編程技術可以簡單的實現(xiàn)網(wǎng)絡信息的傳遞。選用以上兩種技術手段可以確保程序在瀏覽器中的運行效果,而又不用擔心系統(tǒng)功能會被削弱。&l

30、t;/p><p>  在開發(fā)軟件的過程中,人們使用了許多保證軟件質(zhì)量的方法分析、設計和實現(xiàn)軟件,但難免還會在工作中犯錯誤。這樣,在軟件產(chǎn)品中就會隱藏許多錯誤和缺陷,尤其是對規(guī)模大、復雜性高的軟件更是如此。所以,必須進行認真、計劃、徹底的軟件測試。</p><p>  本系統(tǒng)主要通過聊天主界面,輸入呢稱,和聊天信息,通過點擊確定,跳轉(zhuǎn)到SERVLET里,調(diào)用了DAO的增刪改查方法,然后進入DAO

31、的方法。通過連通機制連通數(shù)據(jù)庫并向后臺發(fā)送語句。實現(xiàn)使用功能,方便人們實現(xiàn)在線聊天。</p><p>  第2章 系統(tǒng)的開發(fā)環(huán)境及工具簡介</p><p><b>  2.1 開發(fā)環(huán)境</b></p><p>  Tomcat 服務器是一個免費的開放源代碼的輕量級Web 應用服務器,它是Apache 軟件基金會(Apache Software

32、Foundation)的Jakarta 項目中的一個核心項目,由Apache、Sun 和其他一些公司及個人共同開發(fā)而成。由于有了Sun 的參與和支持,最新的Servlet 和JSP 規(guī)范總是能在Tomcat 中得到體現(xiàn)。</p><p>  它在中小型系統(tǒng)和并發(fā)訪問用戶不是很多的場合下被普遍使用,是開發(fā)和調(diào)試JSP 程序的首選。它運行時占用的系統(tǒng)資源小,擴展性好,支持負載平衡與郵件服務等開發(fā)應用系統(tǒng)常用的功能;而

33、且它還在不斷的改進和完善中,任何一個感興趣的程序員都可以更改它或在其中加入新的功能。</p><p>  2.2 開發(fā)工具介紹</p><p>  2.2.1 Java簡介</p><p>  Java是由Sun Microsystems公司于1995年5月推出的Java程序設計語言(以下簡稱Java語言)和Java平臺的總稱。用Java實現(xiàn)的HotJava瀏覽器(

34、支持Java Applet)顯示了Java的魅力:跨平臺、動感的Web、Internet計算[2]。從此,Java被廣泛接受并推動了Web的迅速發(fā)展,常用的瀏覽器現(xiàn)在均支持Java Applet。另一方面,Java技術也不斷更新。Java分為三個體系J2SE(Java2 Standard Edition),J2EE(Java 2 Platform,Enterprise Edition),J2ME(Java 2 Micro Edition

35、)。</p><p>  Java平臺由Java虛擬機(Java Virtual Machine)和Java 應用編程接口(Application Programming Interface、簡稱API)構(gòu)成。Java 應用編程接口為Java應用提供了一個獨立于操作系統(tǒng)的 標準接口,可分為基本部分和擴展部分。在硬件或操作系統(tǒng)平臺上安裝一個Java平臺之后,Java應用程序就可運行?,F(xiàn)在Java平臺已經(jīng)嵌入了幾乎所

36、有 的操作系統(tǒng)。這樣Java程序可以只編譯一次,就可以在各種系統(tǒng)中運行。Java應用編程接口已經(jīng)從1.1x版發(fā)展到1.2版。目前常用的Java平臺基 于Java1.4,最近版本為Java1.6。</p><p>  2.2.2 Applet簡介</p><p>  Applet是采用Java創(chuàng)建的基于HTML的程序,可通過因特網(wǎng)下載并在接收計算機的瀏覽器軟件中運行。Applet典型用于為萬

37、維網(wǎng)網(wǎng)頁頁面定制 或添加交互格式元素。包含Applet的網(wǎng)頁被稱為Java- powered頁,可以稱其為Java支持的網(wǎng)頁。</p><p>  當用戶訪問這樣的網(wǎng)頁時, Applet被下載到用戶的計算機上執(zhí)行,但前提是用戶使用的是支持Java的網(wǎng)絡瀏覽器。由于Applet是在用戶的計算機上執(zhí)行的,因此它的執(zhí)行速度不受網(wǎng)絡帶寬或者Modem存取速度的限制。用戶可以更好地欣賞網(wǎng)頁上Applet產(chǎn)生的多媒體效果。&

38、lt;/p><p>  在Java Applet中,可以實現(xiàn)圖形繪制,字體和顏色控制,動畫和聲音的插入,人機交互及網(wǎng)絡交流等功能。 Applet還提供了名為抽象窗口工具箱(Abstract Window Toolkit,AWT)的窗口環(huán)境開發(fā)工具。 AWT利用用戶計算機的GUI元素,可以建立標準的圖形用戶界面,如窗口、按鈕、滾動條等等。</p><p>  2.2.3 JSP簡介</p&

39、gt;<p>  JSP(JavaServer Pages)是由Sun Microsystems公司倡導、許多公司參與一起建立的一種動態(tài)網(wǎng)頁技術標準。它是在傳統(tǒng)的網(wǎng)頁HTML文件(*.htm,*.html)中插入Java程序段(Scriptlet)和JSP標記(tag),從而形成JSP文件(*.jsp)。</p><p>  用JSP開發(fā)的Web應用是跨平臺的與Java Servlet一樣,是在服務

40、器端執(zhí)行的,通常返回該客戶端的就是一個HTML文本,因此客戶端只要有瀏覽器就能瀏覽。即能在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)頁設計和顯示分離,支持可重用的基于組件的設計,使基于We

41、b的應用程序的 開發(fā)變得迅速和容易。</p><p>  Web服務器在遇到訪問JSP網(wǎng)頁的請求時,首先執(zhí)行其中的程序段,然后將執(zhí)行結(jié)果連同JSP文件中的HTML代碼一起返回給客戶。插入的Java程序段可以操作數(shù)據(jù)庫、重新定向網(wǎng)頁等,以實現(xiàn)建立動態(tài)網(wǎng)頁所需要的功能。 </p><p>  2.2.4 JDBC簡介</p><p>  JDBC(Java Data B

42、ase Connectivity,Java數(shù)據(jù)庫連接)是一種用于執(zhí)行SQL語句的Java API,可以為多種關系數(shù)據(jù)庫提供統(tǒng)一訪問,它由一組用Java語言編寫的類和接口組成。JDBC為工具/數(shù)據(jù)庫開發(fā)人員提供了一個標準的API,據(jù)此可 以構(gòu)建更高級的工具和接口,使數(shù)據(jù)庫開發(fā)人員能夠用純 Java API編寫數(shù)據(jù)庫應用程序。</p><p>  有了JDBC,向各種關系數(shù)據(jù)發(fā)送SQL語句就是一件很容易的事。程序員只

43、需用JDBC API寫一個程序就夠了,它可向相應數(shù)據(jù)庫發(fā)送SQL調(diào)用。同時,將Java語言和JDBC結(jié)合起來使程序員不必為不同的平臺編寫不同的應用程序,只須寫一遍程序就可以讓它在任何平臺上運行,這也是Java語言“編寫一次,處處運行”的優(yōu)勢。</p><p>  JDBC使用已有的 SQL標準并支持與其它數(shù)據(jù)庫連接標準,如ODBC之間的橋接。實現(xiàn)了所有這些面向標準的目標并且具有簡單、嚴格類型定義且高性能實現(xiàn)的接口

44、。</p><p>  Java 具有堅固、安全、易于使用、易于理解和可從網(wǎng)絡上自動下載等特性,是編寫數(shù)據(jù)庫應用程序的杰出語言。所需要的只是 Java應用程序與各種不同數(shù)據(jù)庫之間進行對話的方法。而 JDBC 正是作為此種用途的機制。</p><p>  它擴展了 Java 的功能。例如,用 Java 和JDBC API可以發(fā)布含有 Applet 的網(wǎng)頁,而該 Applet 使用的信息可能來

45、自遠程數(shù)據(jù)庫企業(yè)也可以用 JDBC 通過 Intranet 將所有職員連到一個或多個內(nèi)部數(shù)據(jù)庫中。</p><p>  2.2.5 MySQL簡介</p><p>  MySQL是一個小型關系型數(shù)據(jù)庫管理系統(tǒng),開發(fā)者為瑞典MySQL AB公司。目前MySQL被廣泛地應用在Internet上的中小型網(wǎng)站中。MySQL的特性如下:</p><p> ?。?)使用C和C+

46、+編寫,并使用了多種編譯器進行測試,保證源代碼的可移植性。</p><p>  (2)支持AIX、FreeBSD、HP-UX、Linux、Mac OS、Novell Netware、OpenBSD、OS/2 Wrap、Solaris、Windows等多種操作系統(tǒng)。</p><p> ?。?)為多種編程語言提供了API。這些編程語言包括C、C++、Eiffel、Java、Perl、PHP、P

47、ython、Ruby和Tcl等。</p><p> ?。?)支持多線程,充分利用CPU資源。</p><p>  (5)優(yōu)化的SQL查詢算法,有效地提高查詢速度。</p><p> ?。?)既能夠作為一個單獨的應用程序應用在客戶端服務器網(wǎng)絡環(huán)境中,也能夠作為一個庫而嵌入到其他的軟件中提供多語言支持,常見的編碼如中文的GB 2312、BIG5,日文的Shift_JIS

48、等都可以用作數(shù)據(jù)表名和數(shù)據(jù)列名。</p><p> ?。?)提供TCP/IP、ODBC和JDBC等多種數(shù)據(jù)庫連接途徑。</p><p> ?。?)提供用于管理、檢查、優(yōu)化數(shù)據(jù)庫操作的管理工具。</p><p> ?。?)可以處理擁有上千萬條記錄的大型數(shù)據(jù)庫。</p><p>  2.3 MVC三層模塊結(jié)構(gòu)</p><p&g

49、t;  2.3.1 view層</p><p>  這一層主要功能是基于JSP技術的網(wǎng)頁顯示。JSP技術使用Java編程語言編寫類XML的tags和scriptlets,來封裝產(chǎn)生動態(tài)網(wǎng)頁的處理邏輯。網(wǎng)頁還能通過tags和scriptlets訪問存在于服務端的資源的應用邏輯。JSP將網(wǎng)頁邏輯與網(wǎng)頁設計和顯示分離,支持可重用的基于組件的設計,使基于Web的應用程序的開發(fā)變得迅速和容易。</p><

50、;p>  JSP與JavaServlet一樣,是在服務器端執(zhí)行的,通常返回給客戶端的就是一個HTML文本,因此客戶端只要有瀏覽器就能瀏覽。</p><p>  JSP與JavaServlet一樣,是在服務器端執(zhí)行的,通常返回給客戶端的就是一個HTML文本,因此客戶端只要有瀏覽器就能瀏覽。</p><p>  View層的功能主要用于顯示網(wǎng)頁和內(nèi)容。</p><p&

51、gt;  2.3.2 control 層</p><p>  這一層主要通過servlet這個控件來實現(xiàn),servlet是一種服務器端的Java應用程序,具有獨立于平臺和協(xié)議的特性,可以生成動態(tài)的Web頁面。 它擔當客戶請求(Web瀏覽器或其他HTTP客戶程序)與服務器響應(HTTP服務器上的數(shù)據(jù)庫或應用程序)的中間層。 Servlet是位于Web 服務器內(nèi)部的服務器端的Java應用程序,與傳統(tǒng)的從命令行啟動的J

52、ava應用程序不同,Servlet由Web服務器進行加載,該Web服務器必須包含支持Servlet的Java虛擬機。</p><p>  它底下包含了DAO.ADD和DAO.FINDALL()等包,起到連接的作用。</p><p>  2.3.3 model 層</p><p>  這一層是模型層,包括DAO、BEAN,向數(shù)據(jù)庫發(fā)送SQL語句,執(zhí)行增刪改查的功能。B

53、EAN是實體類的包,實體類是與數(shù)據(jù)庫表的字段相對應。它是實體類,用來保存數(shù)據(jù)庫表格的中一條記錄的所有字段的數(shù)據(jù)。并且可以驗證這條記錄數(shù)據(jù)的完整性。</p><p>  第3章 功能需求分析</p><p>  3.1 總體需求概述</p><p>  本即時通訊系統(tǒng)包含服務器端和客戶端兩個部分,由于服務器主要是用來數(shù)據(jù)的存儲用戶數(shù)據(jù)與協(xié)調(diào)用戶之間的通訊,以及提供消息

54、中轉(zhuǎn)功能,不需要進行界面設計;客戶端需要給用戶一個方便、實用的界面。</p><p>  3.2詳細功能需求介紹</p><p>  3.2.1 登錄模塊</p><p>  該模塊實現(xiàn)驗證用戶名和密碼是否正確,對用戶的一些不正確輸入進行判斷。例如:用戶名、密碼為空,判斷用戶是否在線。登陸模塊如圖3.1所示</p><p><b>

55、  圖3.1 登陸模塊</b></p><p>  3.2.2 驗證模塊</p><p>  該模塊實現(xiàn)新用戶的注冊,對用戶的一些不正確輸入進行判斷。例如:用戶名、密碼為空;密碼與驗證密碼不一致等問題;判斷用戶是否已經(jīng)注冊。</p><p><b>  特殊需求:</b></p><p>  (1)用戶名字符

56、的位數(shù):8-10,必填。</p><p>  (2)密碼字符的位數(shù):6-10,必填,并以掩碼“*”顯示。</p><p>  (3 )IP地址由數(shù)字和“.”組成,格式為xxx.xxx.xxx.xxx,共15位,xxx的范圍:0-255,必填,</p><p>  (4) 端口號為數(shù)字,范圍8000-9999,必填。</p><p><b

57、>  前置條件:</b></p><p>  (1) 以合法身份登錄操作系統(tǒng),啟動客戶端頁面。</p><p><b>  后置條件:</b></p><p>  (1) 用戶登錄成功,顯示客戶端主窗體。</p><p>  3.2.3 在線查找模塊</p><p>  用戶在線

58、主要包含聯(lián)機、忙碌和離開等狀態(tài),在線好友維護部分包含當前在線好友的顯示、用戶信息的修改、實時在線狀態(tài)更新、在線、離線)、搜索添加好友以及刪除好友等功能。</p><p>  自動設置服務器端套接字,啟動服務后監(jiān)聽客戶端的請求,同時顯示連接狀態(tài)和接收請求的信息。顯示服務器端的IP地址和端口號,顯示當前在線人員的詳細信息,用戶管理如圖3.2所示。</p><p><b>  圖3.2

59、 用戶管理</b></p><p>  3.2.4 聊天模塊</p><p>  聊天功能是本即時通訊系統(tǒng)的主要功能、也是整個通訊系統(tǒng)的核心,是在線的雙方進行信息傳遞的功能,只要是在線的好友雙方都可以進行聊天,并且為每個好友提供單獨的聊天窗口,在聊天窗口中,主要提供輸入聊天信息、顯示聊天信息以及顯示對方昵稱和發(fā)送時間等功能。</p><p>  此外,如

60、果好友處于下線狀態(tài),用戶依然可以向?qū)Ψ桨l(fā)送留言信息,通過服務器的信息中轉(zhuǎn)服務讓該好友下次上線時,就會收到對方的留言信息。客戶聊天流程圖如圖3.3所示。</p><p>  圖3.3 客戶端聊天流程圖</p><p>  3.3 MySQL與JSP、Java的連接</p><p>  JDBC API 既支持數(shù)據(jù)庫訪問的兩層模型(C/S),同時也支持三層模型(B/S

61、)。在兩層模型中,Java applet或應用程序?qū)⒅苯优c數(shù)據(jù)庫進行對話。這將需要一個JDBC驅(qū)動程序來與所訪問的特定數(shù)據(jù)庫管理系統(tǒng)進行通訊。用戶的SQL語句被送往數(shù)據(jù)庫中,而其結(jié)果將被送回給用戶。數(shù)據(jù)庫可以位于另一臺計算機上,用戶通過網(wǎng)絡連接到上面。這就叫做客戶機/服務器配置,其中用戶的計算機為客戶機,提供數(shù)據(jù)庫的計算機為服務器。網(wǎng)絡可以是 Intranet(它可將公司職員連接起來),也可以是 Internet。 JDBC(Java

62、DataBase Connectivity)是用于執(zhí)行SQL語句的Java應用程序接口,由一組用Java語言編寫的類與接口組成。JDBC是一種規(guī)范,它讓各數(shù)據(jù)庫廠商為Java程序員提供標準的數(shù)據(jù)庫訪問類和接口。JDBC編寫數(shù)據(jù)庫程序的方法一般分為三個步驟: </p><p><b> ?。?)建立數(shù)據(jù)源</b></p><p>  建立數(shù)據(jù)源是指建立ODBC數(shù)據(jù)源。

63、</p><p><b> ?。?)建立連接</b></p><p>  與數(shù)據(jù)庫建立連接的標準方法是調(diào)用方法Drivermanger.getConnection (String url,String user,String password)。</p><p>  (3)執(zhí)行SQL語句</p><p>  JDBC提供

64、了Statement類來發(fā)送SQL語句,Statement類的對象由createStatement方法創(chuàng)建。</p><p>  Statement 對象用于將 SQL 語句發(fā)送到數(shù)據(jù)庫中。實際上有三種 Statement 對象,它們都作為在給定連接上執(zhí)行 SQL 語句的包容器:Statement、PreparedStatement(它從 Statement 繼承而來)和 CallableStatement(它從

65、 PreparedStatement 繼承而來)。它們都專用于發(fā)送特定類型的 SQL 語句: Statement 對象用于執(zhí)行不帶參數(shù)的簡單 SQL 語句;PreparedStatement 對象用于執(zhí)行帶或不帶 IN 參數(shù)的預編譯 SQL 語句;CallableStatement 對象用于執(zhí)行對數(shù)據(jù)庫已存在的存儲過程的調(diào)用。Statement 接口提供了執(zhí)行語句和獲取結(jié)果的基本方法。PreparedStatement 接口添加了處理

66、IN 參數(shù)的方法;而 CallableStatement 添加了處理 OUT 參數(shù)的方法。有些 DBMS 將已存儲過程中的每條語句視為獨立的語句;而另外一些則將整個過程視為一個復合語句。在啟用自動提交時,這種差別就變得非常重要,因為它影響什么時候調(diào)用 commit 方法。在</p><p>  第4章 后臺數(shù)據(jù)庫的設計</p><p>  數(shù)據(jù)庫是數(shù)據(jù)庫應用程序的重要組成部分,設計結(jié)構(gòu)合理

67、、功能齊全的數(shù)據(jù)庫對于提高數(shù)據(jù)庫應用程序的開發(fā)效率和程序的性能都是非常重要的[10]。</p><p>  根據(jù)用戶需求,確定數(shù)據(jù)庫中要保存的數(shù)據(jù)信息。對用戶需求進行分析是數(shù)據(jù)庫設計的第一個階段。不斷地調(diào)查與研究用戶需求,了解企業(yè)運作流程和系統(tǒng)需求,是設計概念模型的基礎。</p><p>  設計數(shù)據(jù)的概念模型。概念模型是按用戶的觀點來對數(shù)據(jù)建模,概念模型是用于進行信息世界建模的工具,對數(shù)

68、據(jù)庫的設計具有深刻的影響。 </p><p>  4.1數(shù)據(jù)庫表的設計</p><p>  表的內(nèi)容設計涉及到了整型(INTEGER),可變字符型(VARCHAR),數(shù)據(jù)型(TEXT)和日期型(DATA)。本系統(tǒng)的數(shù)據(jù)庫由三個表組成:users、records、online。</p><p>  E-R圖如圖4.1所示。</p><p>  

69、圖4.1 E-R圖</p><p>  4.1.1 users表</p><p>  該表的主要作用是保存用戶注冊的基本信息。該表包含ID用戶名,psw MD5處理后的密碼,email電子郵件,sex性別,Info用戶信息和Data注冊時間六個字段。其結(jié)構(gòu)如表4.2所示。</p><p>  表4.2 users表</p><p>  4.

70、1.2 records表</p><p>  該表主要用于記錄用戶離線時收到的信息,也可以保存用戶的聊天記錄。該表包含ID用戶名,record記錄兩個字段。其ID字段和users表中ID字段相對應。其結(jié)構(gòu)如表4.3所示。</p><p>  表4.3 records表</p><p>  4.1.3 online表</p><p>  該表記

71、錄用戶的在線狀態(tài),對服務器端轉(zhuǎn)發(fā)數(shù)據(jù)包有著至關重要的作用。該表包含name姓名,ID編號兩個字段。其結(jié)構(gòu)如表4.4所示。</p><p>  表4.4 online表</p><p>  4.1.4 數(shù)據(jù)庫層</p><p>  數(shù)據(jù)庫層的數(shù)據(jù)如圖4.5所示.</p><p><b>  圖4.5數(shù)據(jù)庫</b></

72、p><p>  import java.sql.Connection;</p><p>  import java.sql.DriverManager;</p><p>  import java.sql.PreparedStatement;</p><p>  import java.sql.ResultSet;</p><

73、p>  import java.sql.SQLException;</p><p>  import java.sql.Statement;</p><p>  public class DBConnection {</p><p>  private static final String driverName="com.microsoft.sql

74、server.jdbc.SQLServerDriver";</p><p>  private static final String URL="jdbc:sqlserver://localhost:1433;database=db_shop";</p><p>  public static Connection getConnection(String u

75、sername,String userpass){</p><p>  Connection conn=null;</p><p><b>  try {</b></p><p>  Class.forName(driverName);</p><p>  conn=DriverManager.getConnection

76、(URL, username, userpass);</p><p>  } catch (ClassNotFoundException e) {</p><p>  // TODO Auto-generated catch block</p><p>  e.printStackTrace();</p><p>  } catch (SQL

77、Exception e) {</p><p>  // TODO Auto-generated catch block</p><p>  e.printStackTrace();</p><p><b>  }</b></p><p>  return conn;</p><p><b&g

78、t;  }</b></p><p>  public static Connection getConnection(){</p><p>  return getConnection("sa","123456");</p><p><b>  }</b></p><p&

79、gt;<b>  4.1.5 模型層</b></p><p>  主要由BEAN下的RecordDTO構(gòu)成。</p><p>  public class RecordDTO {</p><p>  private int recordID;</p><p>  private String recordName;<

80、;/p><p>  private String recordMessage;</p><p>  public int getRecordID() {</p><p>  return recordID;</p><p><b>  }</b></p><p>  public void setRe

81、cordID(int recordID) {</p><p>  this.recordID = recordID;</p><p><b>  }</b></p><p>  public String getRecordName() {</p><p>  return recordName;</p>

82、<p><b>  }</b></p><p>  public void setRecordName(String recordName) {</p><p>  this.recordName = recordName;</p><p><b>  }</b></p><p>  pu

83、blic String getRecordMessage() {</p><p>  return recordMessage;</p><p><b>  }</b></p><p>  public void setRecordMessage(String recordMessage) {</p><p>  thi

84、s.recordMessage = recordMessage;</p><p><b>  }</b></p><p>  第5章 系統(tǒng)詳細實現(xiàn)</p><p><b>  5.1 流程示意圖</b></p><p>  如圖5.1所示,通過三層設計模型把應用邏輯,處理過程和顯示邏輯分成不同的組件

85、實現(xiàn)。這些組件可以進行交互和重用。VIEW端的CHAT.jsp表是視圖層的文件,把數(shù)據(jù)傳到CONTROL層的DAO包,再傳到模型層的ADD,和FINDALL包里面,最后到數(shù)據(jù)庫層的完成數(shù)據(jù)的提取,最后由DAO.FINDALL傳值到WEB頁面。</p><p>  圖5.1 流程示意圖</p><p>  5.2 各個模塊的實現(xiàn) </p><p>  總流程圖如5.

86、2所示</p><p>  圖 5.2 總體流程圖</p><p>  5.2.1 登錄頁面</p><p>  login.jsp頁面提供用戶的登錄界面及注冊鏈接,提示用戶輸入用戶名和密碼。這個頁面提供表單的post方法,將用戶輸入的信息name和psw發(fā)送給ver.jsp頁面。登錄頁面的表單由兩個表格<table>組成。第一個表格用于放置用戶名和密碼

87、輸入框,第二個表格用于放置用戶提交和重置按鈕。如圖5.3所示.</p><p><b>  圖5.3 登錄頁面</b></p><p><b>  代碼:</b></p><p>  <meta http-equiv="pragma" content="no-cache">

88、;</p><p>  <meta http-equiv="cache-control" content="no-cache"></p><p>  <meta http-equiv="expires" content="0"> </p><p>  <

89、;meta http-equiv="keywords" content="keyword1,keyword2,keyword3"></p><p>  <meta http-equiv="description" content="This is my page"></p><p><b

90、>  <!--</b></p><p>  <link rel="stylesheet" type="text/css" href="styles.css"></p><p><b>  --></b></p><p><b>  &

91、lt;/head></b></p><p>  <script type="text/javascript" src="js/demo.js"></script></p><p>  <body background="image/1421355329.jpg" left=250

92、 top=200 width=500 height=400></p><p><b>  <center></b></p><p>  <iframe name="aa" width="450" height="250" marginwidth="30" m

93、arginheight="20" align="center" allowtransparency="true" style="background-color:white"></p><p><b>  </iframe></b></p><p><b>  

94、</center></b></p><p>  <form action="Chat" id="form1" method="post" target="aa"></p><p><b>  <center></b></p>

95、<p><b>  <table></b></p><p>  <!--DWLayoutTable--></p><p>  <tr><td align="left" colspan="+2">昵稱:<input type="text" id=&

96、quot;s1" name="name" onblur="checknameID()"/></td><input type="submit" value="進入聊天" ></tr></p><p><b>  <tr></b></p>

97、<p>  <td width="365" height="57" valign="top" style="size:5"><textarea name="content" id="s2" cols="50" wrap="physical" style

98、="height:100">請輸入內(nèi)容</textarea></td></p><p>  <td width="40" valign="top"><input name="提交" type="submit" value="確認" style=&

99、quot;height:100" style="width:50"/></tr></p><p>  5.2.2 聊天頁面</p><p>  CHAT.JSP是用于顯示聊天界面的主頁面,它由chat.jsp和testchat.JSP</p><p>  組成,TESTCHAT.JSP主要用于點擊進入聊天之后的頁面顯示

100、。如圖5.4顯示。</p><p><b>  圖5.4聊天界面</b></p><p><b>  代碼:</b></p><p>  !DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"></p><p&

101、gt;<b>  <html></b></p><p><b>  <head></b></p><p>  <base href="<%=basePath%>"> </p><p>  <title>My JSP 'testchat.

102、jsp' starting page</title> </p><p>  <meta http-equiv="pragma" content="no-cache"></p><p>  <meta http-equiv="cache-control" content="no-cac

103、he"></p><p>  <meta http-equiv="expires" content="0"> </p><p>  <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">&l

104、t;/p><p>  <meta http-equiv="description" content="This is my page"></p><p><b>  <!-- </b></p><p>  <meta content="1" http-equiv=

105、"refresh"/></p><p><b>  --></b></p><p><b>  <!--</b></p><p>  <link rel="stylesheet" type="text/css" href="sty

106、les.css"></p><p><b>  </head></b></p><p><b>  <body ></b></p><p>  <c:forEach var="list" items="${list}"></p

107、><p>  <font color="blue" face="幼圓">${list.recordName}</font>說:</p><p><b>  <br/></b></p><p>  <font face="黑體">${list.

108、recordMessage}</font></p><p><b>  <br/></b></p><p>  </c:forEach></p><p>  5.2.3 查看在線用戶</p><p>  軟件具有查看在線人數(shù)功能,以下代碼用于查看用戶的狀態(tài)與信息。如圖5.5所示.<

109、;/p><p>  圖5.5查看在線人數(shù)</p><p>  代碼:public class Chat extends HttpServlet {</p><p>  public void doGet(HttpServletRequest request, HttpServletResponse response)</p><p>  thr

110、ows ServletException, IOException {</p><p>  doPost(request,response);</p><p><b>  }</b></p><p>  public void doPost(HttpServletRequest request, HttpServletResponse resp

111、onse)</p><p>  throws ServletException, IOException {</p><p>  request.setCharacterEncoding("UTF-8");</p><p>  String name=request.getParameter("name");</p>

112、;<p>  name=new String(name.getBytes("iso-8859-1"),"UTF-8");</p><p>  String content=request.getParameter("content");</p><p>  content=new String(content.get

113、Bytes("iso-8859-1"),"UTF-8");</p><p>  RecordDAO dao=new RecordDAO();</p><p>  ArrayList<RecordDTO> list=new ArrayList<RecordDTO>();</p><p>  if(name

114、==null){</p><p>  list=dao.showMessage();</p><p>  request.setAttribute("name", name);</p><p>  request.setAttribute("content", content);</p><p><

115、;b>  }</b></p><p><b>  else{</b></p><p>  dao.insertRecord(name, content);</p><p>  list=dao.showMessage();</p><p>  request.setAttribute("nam

116、e", name);</p><p>  request.setAttribute("content", content);</p><p><b>  }</b></p><p>  request.setAttribute("list", list);</p><p>

117、;  request.getRequestDispatcher("testchat.jsp").forward(request, response);</p><p>  5.2.4 服務器端的顯示</p><p>  Server為管理人員提供一個的圖形界面,實現(xiàn)對各個用戶間即時消息的監(jiān)控??梢杂嗅槍π缘膭h除指定的用戶。提供指定對用戶消息的轉(zhuǎn)發(fā)。服務器端功能:可以通過

118、此功能啟動服務器。</p><p>  簡要說明:本用例的功能是啟動服務器服務,偵聽客戶端發(fā)送的請求,響應客戶端請求。</p><p><b>  基本流:</b></p><p>  (1)運行服務器端程序。</p><p>  (2)獲取本地IP地址,從本地配置文件中讀取端口號,如果讀取失敗轉(zhuǎn)向備選流。</p&

119、gt;<p>  (3)設置服務器配置信息。</p><p>  (4)彈出服務器端主窗體,工具欄上“啟動服務”按鈕的狀態(tài)應為禁用。</p><p>  (5)菜單欄中“啟動服務”菜單狀態(tài)應為禁用。</p><p>  (6)服務器端主窗體的標題欄應改為“服務器已經(jīng)啟動”。</p><p>  (7)服務器啟動成功,進入偵聽狀態(tài)

120、,等待客戶端發(fā)送的請求。</p><p><b>  備選流:</b></p><p>  (1) 如果從本地配置文件讀取不到端口信息或本地配置文件不存在等,將顯示諸如“服務器程序配置出錯,服務器啟動失敗,請于管理員聯(lián)系!”的提示消息。</p><p>  (2 )服務器啟動程序自動關閉。</p><p><b&g

溫馨提示

  • 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

提交評論