JavaWeb課題設(shè)計報告_第1頁
JavaWeb課題設(shè)計報告_第2頁
JavaWeb課題設(shè)計報告_第3頁
JavaWeb課題設(shè)計報告_第4頁
JavaWeb課題設(shè)計報告_第5頁
已閱讀5頁,還剩37頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

洛陽理工學(xué)院課程設(shè)計(論文)姓名系(部)專業(yè)JavaWeb課題設(shè)計報告全文共41頁,當(dāng)前為第1頁。學(xué)號JavaWeb課題設(shè)計報告全文共41頁,當(dāng)前為第1頁。完成時間第一部分目錄 TOC\o"1-3"\h\zJavaWeb課題設(shè)計報告全文共41頁,當(dāng)前為第2頁。JavaWeb課題設(shè)計報告全文共41頁,當(dāng)前為第2頁?!都夹g(shù)論壇系統(tǒng)》使學(xué)生在充分理解《JavaWeb應(yīng)用程序設(shè)計》課程知識點的基礎(chǔ)上,能初步掌握J(rèn)avaWeb程序開發(fā)語言、開發(fā)流程;能利用JavaWeb程序設(shè)計原理及綜合運用HTML、JSP以及JavaScript等JavaWeb設(shè)計語言實現(xiàn)一個完善的JavaWeb系統(tǒng)。BBS論壇是一種比較好的交流平臺,它能方便人們進(jìn)行即時在線交流,發(fā)表各種信息,實現(xiàn)網(wǎng)絡(luò)資源的共享。而且,也能促使人們敞開心扉去學(xué)習(xí)知識、追求進(jìn)步,以至于能更好的利用網(wǎng)絡(luò)資源。鑒于BBS的這些優(yōu)點,又加之制作BBS的一些基本編程知識曾學(xué)習(xí)過,如《Java大學(xué)實用教程》、《JavaWeb應(yīng)用程序設(shè)計》以《MyEclipse6.0基礎(chǔ)教程》,考慮到個人喜好及實現(xiàn)系統(tǒng)的難度,所以最后選擇JavaWeb應(yīng)用程序設(shè)計—BBS論壇制作。而在這里,我將采用基于JSP網(wǎng)頁技術(shù)的方法進(jìn)行簡單的BBS論壇制作。我所用的開發(fā)軟件是MyEclipse6.5,它是一款可以做基礎(chǔ)Java項目開發(fā)的工具;JDK1.6,當(dāng)前進(jìn)行Java開發(fā)的一款實用版本;數(shù)據(jù)庫軟件是MicrosoftOfficeAccess2007,它是一款容易進(jìn)行中小量數(shù)據(jù)存儲開發(fā)的中小型數(shù)據(jù)庫軟件;服務(wù)器是Tomcat6.5,它也是一款當(dāng)前比較流行的軟件,主要用于網(wǎng)絡(luò)服務(wù)器的開發(fā)。無論是軟件還是技術(shù)方面都能實現(xiàn)此次課題所要求完成的功能的設(shè)計。用戶注冊及登錄:進(jìn)入登錄頁面后,對于第一次登錄的用戶來說,首先需要注冊,單擊“立即注冊”按鈕即可進(jìn)入注冊界面,注冊完成后返回登錄界面。然后,在對應(yīng)的地方分別輸入用戶名和密碼,點擊“登錄”按鈕,系統(tǒng)即將用戶名和密碼發(fā)送到網(wǎng)絡(luò)服務(wù)器上,與保存在服務(wù)器數(shù)據(jù)庫中的信息進(jìn)行核對。若核對正確,則進(jìn)入帖子瀏覽的界面,若不正確,則重新返回登錄界面。注意:若用戶名或者密碼為空時,點擊了“登錄”按鈕,則系統(tǒng)提示你的用戶名或密碼為空,請重新輸入,點擊對話框的“返回”,即可重新回到登錄界面。JavaWeb課題設(shè)計報告全文共41頁,當(dāng)前為第3頁。用戶發(fā)帖:已登錄到論壇主頁面的用戶可以查看用戶的基本信息、更改密碼、帖子查詢、進(jìn)入某個論壇進(jìn)行發(fā)帖。JavaWeb課題設(shè)計報告全文共41頁,當(dāng)前為第3頁。用戶回帖:已登錄用戶可以跟在其它人帖子后回復(fù)。管理員功能:管理員成功登錄到操作界面后可查看用戶的信息、可增添或者刪除板塊論壇、可注銷已注冊的用戶、可查詢和刪除用戶的帖子。查找功能:成功登錄的用戶和管理員能夠根據(jù)帖子主題或者用戶查找相關(guān)帖子。本系統(tǒng)開發(fā)平臺:MyEclipse6.5、MicrosoftOfficeAccess2007數(shù)據(jù)庫管理軟件、JavaWeb開發(fā)語言本系統(tǒng)運行環(huán)境:windows7、Tomcat6.5、JDK1.6登陸界面:該界面可以選擇使用者的身份,例如管理員、普通論壇用戶,分別進(jìn)入不同的鏈接。不同的身份登錄有不同的操作界面和功能權(quán)限。不同的身份在登陸界面的用戶名及密碼框中正確的輸入即可登錄。用戶系統(tǒng)界面:能夠提供對論壇用戶基本信息的查詢、密碼修改等功能、帖子發(fā)表、帖子查詢、帖子回復(fù)。管理員系統(tǒng)界面:能夠提供對論壇用戶刪除、論壇用戶基本信息查詢、可增添或者刪除板塊論壇、可查詢和刪除用戶的帖子等功能。界面登錄功能:系統(tǒng)提供不同的用戶登錄(例如普通論壇用戶、管理員),用戶在登錄界面正確的輸入登錄名和登錄密碼后,即可進(jìn)入到對應(yīng)的操作界面完成系統(tǒng)提供的功能。用戶查詢功能:為所有用戶提供查詢的功能,可查詢允許范圍內(nèi)的所有信息,例如查詢所有論壇用戶信息、根據(jù)用戶、帖子主題、時間范圍查詢帖子信息、論壇的統(tǒng)計信息。用戶發(fā)帖和回帖功能:用戶成功進(jìn)入論壇主頁,然后可在各個論壇里發(fā)表帖子并可回復(fù)其他用戶的帖子。管理員權(quán)限功能:成功進(jìn)入管理員界面后可對已注冊用戶進(jìn)行管理(例如刪除用戶)、用戶信息查詢、論壇版面的增添和刪除、可查詢用戶的帖子及刪除用戶帖子。JavaWeb課題設(shè)計報告全文共41頁,當(dāng)前為第4頁。用戶密碼取回功能:在用戶忘記密碼的情況下提供用戶尋回密碼的功能,在登錄界面單擊“取回密碼”鏈接到相應(yīng)的界面,然后輸入信息,如果輸入的信息匹配則能找回密碼,否則提示錯誤信息。JavaWeb課題設(shè)計報告全文共41頁,當(dāng)前為第4頁。bbsadd.jsp用戶發(fā)表帖子頁面bbsaddre.jsp用戶瀏覽帖子和回復(fù)帖子頁面bbslist.jsp論壇版主瀏覽、查詢、刪除帖子頁面boardmanager.jsp管理員管理用戶和論壇版塊頁面index1.jsp用戶登錄論壇進(jìn)行操作頁面login.jsp用戶和管理員登陸界面query.jsp帖子查詢頁面registry.jsp用戶注冊頁面userinfo.jsp用戶信息修改頁面usermanager.jsp用戶管理頁面lostpass.jsp用戶密碼取回頁面JavaWeb課題設(shè)計報告全文共41頁,當(dāng)前為第5頁。論壇系統(tǒng)功能模塊圖JavaWeb課題設(shè)計報告全文共41頁,當(dāng)前為第5頁。技術(shù)論壇系統(tǒng)登錄技術(shù)論壇系統(tǒng)登錄用戶登錄管理員登錄用戶信息用戶信息查詢帖子查詢論壇信息統(tǒng)計論壇信息修改增加論壇版塊查詢用戶信息刪除用戶信息刪除用戶帖子用戶信息修改密碼修改論壇版塊根據(jù)主題查詢根據(jù)用戶查詢發(fā)帖回帖密碼取回根據(jù)本BBS技術(shù)論壇功能的要求以及功能模塊的劃分,其中涉及到的信息數(shù)據(jù)可存放在四張表中,它們分別是:用戶信息表user表、發(fā)表帖子和回復(fù)帖子的信息表bbs表、管理員登錄信息表,數(shù)據(jù)庫表的具體設(shè)計如下所示:4.1.1用戶信息表user表JavaWeb課題設(shè)計報告全文共41頁,當(dāng)前為第6頁。用戶信息表user表包括12個字段:userid、username、usersexuserpassword、useremail、userhomepage、hpname、userbirthday、comefrom、userclass、usersign、dateandtime。JavaWeb課題設(shè)計報告全文共41頁,當(dāng)前為第6頁。user表的屬性如圖1-1所示:(圖1-1)4.1.2論壇版塊信息表board表論壇版塊信息表board表包括8個字段:boardid、boardname、boardmaster、masterpwd、masterword、masteremail、boardhits、boardtopics。board表的屬性如圖1-2所示:(圖1-2)4.1.3管理員登錄信息表admin表管理員登錄信息表admin表包括2個字段:adminname、adminpwd。Admin表的屬性如圖1-3所示:(圖1-3)4.1.4論壇帖子發(fā)表和帖子回復(fù)信息表bbs表論壇帖子發(fā)表和帖子回復(fù)信息表bbs表包括14個字段:bbsid、parentid、boardid、child、username、useremail、userip、expression、usersign、bbstopic、bbscontent、dateandtime、bbshits、length。JavaWeb課題設(shè)計報告全文共41頁,當(dāng)前為第7頁。bbs表的屬性如圖1-4所示:JavaWeb課題設(shè)計報告全文共41頁,當(dāng)前為第7頁。(圖1-4)5.1.1.功能設(shè)計登錄界面提供普通論壇用戶和管理員登錄到不同界面進(jìn)行不同的操作,只要在登錄界面正確的輸入登錄名和登錄密碼即可登錄到相應(yīng)的操作界面。5.1.2.登錄界面測試如圖1-5所示:(圖1-5)JavaWeb課題設(shè)計報告全文共41頁,當(dāng)前為第8頁。5.1.3用戶注冊界面測試如圖1-6所示:JavaWeb課題設(shè)計報告全文共41頁,當(dāng)前為第8頁。(圖1-6)5.1.4尋回用戶密碼測試如圖1-7所示:(圖1-7)5.2.1.功能設(shè)計論壇用戶操作界面下提供給用戶的功能:用戶單擊“用戶信息”,在出現(xiàn)的頁面中可進(jìn)行密碼的修改、用戶信息查詢、用戶信息修改;單擊“帖子查詢”,在出現(xiàn)的頁面中可根據(jù)主題、用戶、時間范圍查詢帖子;單擊“論壇信息”,在出現(xiàn)的頁面中顯示了論壇的統(tǒng)計信息;單擊某個論壇版塊鏈接,可在出現(xiàn)的版塊頁面中進(jìn)行帖子的發(fā)表、帖子的回復(fù)、帖子的查詢。JavaWeb課題設(shè)計報告全文共41頁,當(dāng)前為第9頁。5.2.1.論壇主界面設(shè)計效果如圖1-8所示:JavaWeb課題設(shè)計報告全文共41頁,當(dāng)前為第9頁。(圖1-8)5.2.3用戶信息功能測試如圖1-9所示:(圖1-9)5.2.4帖子查詢功能測試如圖1-10所示:(圖1-10)JavaWeb課題設(shè)計報告全文共41頁,當(dāng)前為第10頁。5.2.5帖子發(fā)表和帖子回復(fù)測試如圖1-11、1-12所示:JavaWeb課題設(shè)計報告全文共41頁,當(dāng)前為第10頁。(圖1-11)(圖1-12)5.3.1功能設(shè)計管理員操作界面下提供給管理員的功能:注冊用戶的管理(用戶的查詢、用戶的刪除)、論壇版塊的添加、論壇版塊信息的修改和刪除、論壇帖子的查詢、論壇帖子的刪除等功能。JavaWeb課題設(shè)計報告全文共41頁,當(dāng)前為第11頁。5.3.2界面設(shè)計效果如圖1-13所示:JavaWeb課題設(shè)計報告全文共41頁,當(dāng)前為第11頁。(圖1-13)5.3.3注冊用戶管理測試如圖1-14、1-15所示:(圖1-14)(圖1-15)JavaWeb課題設(shè)計報告全文共41頁,當(dāng)前為第12頁。5.3.4JavaWeb課題設(shè)計報告全文共41頁,當(dāng)前為第12頁。(圖1-16)JavaWeb課題設(shè)計報告全文共41頁,當(dāng)前為第13頁。第二部分JavaWeb課題設(shè)計報告全文共41頁,當(dāng)前為第13頁。JavaWeb課題設(shè)計報告全文共41頁,當(dāng)前為第14頁。JavaWeb課題設(shè)計報告全文共41頁,當(dāng)前為第14頁。第一章緒論1.1系統(tǒng)現(xiàn)狀在人們的生活中,信息技術(shù)的飛速發(fā)展正在發(fā)生深刻變化。人與人之間的對話是不再局限于面對面,網(wǎng)上聊天室提供了信息交流的另一個地方。傳統(tǒng)的聊天室,以顯示在線用戶和用戶信息的實時傳送,需要定期刷新頁面。刷新頁面,不僅要占用一定的系統(tǒng)資源和網(wǎng)絡(luò)帶寬,也會出現(xiàn)“白屏”的現(xiàn)象,這對良好的用戶體驗是非常不利的。而使用Ajax技術(shù)開發(fā)的聊天室,不僅可以解決頁面刷新帶來白屏的問題,也減少了對服務(wù)器和網(wǎng)絡(luò)傳輸?shù)呢?fù)載。隨著互聯(lián)網(wǎng)應(yīng)用的普及,web應(yīng)用以其良好的擴展性、易于部署、維護方便等優(yōu)點逐漸成為軟件開發(fā)的主流。早期的Web應(yīng)用采用的是同步交互過程,即用戶首先向Web服務(wù)器提交一個請求或行為呼叫,服務(wù)器接收到客戶請求后執(zhí)行相應(yīng)處理操作,最后向用戶返回處理結(jié)果。服務(wù)器在處理請求時,用戶處于等待狀態(tài),有時如果超過了服務(wù)器響應(yīng)時間,甚至返回“頁面不可用”等提示。另外,當(dāng)我們只想改變頁面的部分?jǐn)?shù)據(jù)時,用戶的請求會導(dǎo)致服務(wù)器重新返回整個頁面內(nèi)容,包括那些沒有改變的數(shù)據(jù),這不但增加了網(wǎng)絡(luò)傳輸?shù)臄?shù)據(jù)量,還影響了客戶端的響應(yīng)時間,為什么我們不能“按需”獲取數(shù)據(jù)呢?Ajax技術(shù)可以很好的解決上述web應(yīng)用中存在的問題。Ajax技術(shù)是Web2.0的核心之一,本質(zhì)上是一種RIA(RichIllternetApplication)技術(shù)。RIA是指具有高度互動性和豐富用戶體驗的網(wǎng)絡(luò)應(yīng)用程序,它既具有消息確認(rèn)、無刷新頁面之下提供快捷的界面響應(yīng)、拖放式等桌面應(yīng)用程序的特點,同時又具有部署簡單、跨平臺等Web應(yīng)用程序的特點。Ajax技術(shù)提供了客戶端與服務(wù)器異步通信的能力,從而使用戶從請求一響應(yīng)一再請求的循環(huán)中解脫出來,同時降低了網(wǎng)絡(luò)傳輸?shù)臄?shù)據(jù)量,提高了客戶端的響應(yīng)速度,改善了用戶使用體驗,使得web應(yīng)用可以接近甚至達(dá)到類似“桌面應(yīng)用”的效果。而Ajax有上述優(yōu)勢,例如GoogleSuggest,Gmail,GoogleMap等等交互程序中都使用了異步通訊技術(shù)。不知不覺中,Ajax應(yīng)用程序占據(jù)了整個網(wǎng)絡(luò)的每一個角落??v觀所有的應(yīng)用程序,更好的用戶體驗是其的共同目標(biāo),在瀏覽器中實現(xiàn)桌面用戶界面體驗是Web開發(fā)的一種趨勢。Ajax技術(shù)從谷歌到IBM,甲骨文,雅虎,BEA系統(tǒng)公司,紅帽,Novell公司獲得業(yè)界眾多的IT巨頭的支持,其快速發(fā)展是值得期待的。技術(shù)創(chuàng)新和標(biāo)準(zhǔn)化是Ajax技術(shù)發(fā)展的必由之路,而W3C已成立了工作小組,專門從事Ajax的規(guī)范發(fā)展工作。1.2國內(nèi)外主要研究成果JavaWeb課題設(shè)計報告全文共41頁,當(dāng)前為第15頁。Ajax技術(shù)的精髓是用異步交互替代了傳統(tǒng)的同步交互,所以當(dāng)用戶操作時間大于服務(wù)器響應(yīng)時間的時候,使用Ajax的效果非常明顯。而當(dāng)程序性能的瓶頸在于服務(wù)器響應(yīng)時間的時候,Ajax無法解決程序運行緩慢的問題。因此,Ajax是更適合在網(wǎng)絡(luò)上的互動頻繁輕量級的應(yīng)用程序。在Ajax開發(fā)的應(yīng)用程序中,Google公司成功將Ajax技術(shù)應(yīng)用到他們的商業(yè)產(chǎn)品。Google地圖和GoogleSuggest都應(yīng)用了這項技術(shù)。當(dāng)用戶使用谷歌地圖查看地圖(包括地圖的縮放和平移地圖),并沒有提交任何請求到服務(wù)器,你就可以瀏覽到地圖的各個部分。在這里,它是Ajax技術(shù)的應(yīng)用,使得地圖是不刷新的方式,但每個顯示原始數(shù)據(jù)的基礎(chǔ)上以增量方式顯示。在這種方式下,用戶覺得就像是在自己的計算機上查看本地的地圖。微軟也在積極開發(fā)Ajax應(yīng)用程序:它將Ajax技術(shù)應(yīng)用到的MSNSpace上面。當(dāng)用戶使用MSNSpace提交回復(fù)評論時,瀏覽器會暫時停頓,然后刷新顯示用戶提交的評論,這是應(yīng)用了Ajax的原理。目前,Ajax應(yīng)用最普遍的領(lǐng)域是GIS-Map方面。GIS的區(qū)域搜索強調(diào)快速響應(yīng),Ajax的特點正好符合這種要求。在應(yīng)用Ajax技術(shù)開發(fā)過程當(dāng)中,處于核心位置的Ajax引擎實際上是一些復(fù)雜的JavaScript程序。隨著網(wǎng)絡(luò)應(yīng)用和界面表現(xiàn)的復(fù)雜化,使用面向過程的JavaScript語言描述表現(xiàn)邏輯將會變得很困難。同時,JavaScript的兼容性和調(diào)試都會成為使用Ajax技術(shù)的一個障礙。為了解決這些問題,開發(fā)人員已經(jīng)開發(fā)出了一些基于Ajax技術(shù)的框架,方便了開發(fā)人員使用,有利于Ajax技術(shù)的進(jìn)一步推廣。當(dāng)然,任何技術(shù)都是有局限性的,Ajax也不例外。Ajax更新頁面無需刷新重載,這也使傳統(tǒng)的一些用戶交互行為變得不可用,如后退、前進(jìn)和刷新等。另外,移動設(shè)備(如手機、PDA等)現(xiàn)在還不能很好的支持Ajax,Ajax對流媒體的支持也沒有JavaApplet和Flash這樣成熟的技術(shù)好。因此,一些輔助的平臺和插件的開發(fā)也將是Ajax技術(shù)應(yīng)用當(dāng)中重要的一部分。JavaWeb課題設(shè)計報告全文共41頁,當(dāng)前為第15頁。Ajax把大量的運算從服務(wù)器轉(zhuǎn)移到了客戶端瀏覽器,這意味著瀏覽器將承受更大的負(fù)擔(dān),而不再是簡單的文檔顯示功能。聊天室作為一個能夠吸引人氣的欄目,在現(xiàn)代網(wǎng)絡(luò)應(yīng)用中隨處可見。它的作用是給不同的用戶提供一個交流信息的場所。用戶在聊天室中可以發(fā)布信息,就如同所有用戶都在一個個真正室內(nèi)聊天一樣。

傳統(tǒng)的聊天室程序一般設(shè)置在客戶端的網(wǎng)頁自動刷新。刷新在這樣的數(shù)據(jù)會帶來一些缺點,例如:每次刷新服務(wù)器應(yīng)該重新獲取數(shù)據(jù),大大提高了服務(wù)器上的負(fù)載,此刷新過程正在進(jìn)行,這將是非常嚴(yán)重的影響服務(wù)器的性能;每次刷新過程中會產(chǎn)生大量無用數(shù)據(jù),不斷刷新頁面,用戶在客戶端方面,將導(dǎo)致屏幕閃爍。解決屏幕閃動最重要的一條原則就是,將改動的地方顯示到客戶端,而那些不需要改動的地方則盡量不要讓用戶感覺到變化。一個更好的解決辦法是使用Ajax技術(shù)的無刷新聊天室應(yīng)用。JavaWeb課題設(shè)計報告全文共41頁,當(dāng)前為第16頁。現(xiàn)在的聊天室通過四個主要功能模塊實現(xiàn)了聊天室中用戶登錄、注銷、環(huán)境設(shè)置、發(fā)送消息、讀取消息和查看在線用戶列表等。聊天室系統(tǒng)為用戶提供了聊天場所,操作員可對后臺網(wǎng)站的風(fēng)格、廣告鏈接等進(jìn)行設(shè)置;用戶可以根據(jù)個人的習(xí)慣選擇字體、文字顏色和表情等;前臺聊天室具有私聊的功能,私聊的內(nèi)容僅供私聊雙方查看;聊天者可自己手動清除聊天內(nèi)容。操作員可通過客戶端處理模塊獲取界面元素從而得到聊天內(nèi)容或與服務(wù)器交互更新客戶端頁面響應(yīng)用戶事件。服務(wù)器端響應(yīng)模塊可提供聊天室界面元素信息獲得提交數(shù)據(jù)。JavaWeb課題設(shè)計報告全文共41頁,當(dāng)前為第16頁。第二章系統(tǒng)開發(fā)環(huán)境和關(guān)鍵技術(shù)2.1系統(tǒng)的開發(fā)環(huán)境MyEclipseJava如圖1-1系統(tǒng)開發(fā)環(huán)境。圖1-1系統(tǒng)開發(fā)環(huán)境2.2Application對象Application對象是一個環(huán)境上下文(context)對象,用于保存應(yīng)用程序中的所有公有數(shù)據(jù),服務(wù)器啟動并且自動創(chuàng)建Application對象以后,只要沒有關(guān)閉服務(wù)器,Application對象將一直存在,并且可以被所有用戶共享。Application對象為JSP提供的內(nèi)置對象,可以直接使用,但在servlet中,需要通過以下代碼來獲取該對象的實例,才可以使用該對象。ServletContextapplication=getServletContext();Application對象提供了很多方法,我的設(shè)計中,只使用了setAttribute()和getAttribute()方法。JavaWeb課題設(shè)計報告全文共41頁,當(dāng)前為第17頁。首先來介紹setAttribute()方法,該方法用于將一個對象綁定到一個屬性上,該屬性在整個Servlet上下文中都適用。setAttribute()方法的語法格式如下;Application.setAttribute(Stringname,Objectobject);JavaWeb課題設(shè)計報告全文共41頁,當(dāng)前為第17頁。參數(shù)說明:name:用于指定的一個屬性名該屬性在整個Servlet上下文都適用。object:用于指定屬性值。如本設(shè)計中的,設(shè)置保存聊天信的Application對象的屬性的具體代碼如下:application。setAttribute(“message”.sourceMessage);下面我們再來介紹getAttribute()方法,該方法用于返回Application對象的指定屬性的值。如果不存在該屬性,則返回null。getAttribute()方法的基本語法如下:Application。getAttribute(Stringname);參數(shù)說明:Name:用于指定一個屬性名。本設(shè)計中,設(shè)置獲取聊天信息的Application對象的屬性的具體代碼如下:StringsourceMessage=application.getAttribute(“message”).toString();2.3Ajax技術(shù)Ajax是一種創(chuàng)建交互式網(wǎng)頁的web開發(fā)技術(shù)。Ajax的一個非常成功的案例就是Google,當(dāng)用戶在Google的搜索輸入框中輸入關(guān)鍵字的時候。他會提示與關(guān)鍵字相關(guān)的另一些關(guān)鍵字。用戶可以對自己喜歡的一些關(guān)鍵字進(jìn)行選擇,這樣既方便了用戶定位自己的需要,又可以很好的引導(dǎo)搜索結(jié)果。

在Ajax應(yīng)用中,頁面中用戶的操作將通過Ajax引擎與服務(wù)器進(jìn)行通信,然后將返回結(jié)果提交給客戶端頁面的Ajax引擎,而有Ajax引擎決定這些數(shù)據(jù)插入到頁面的任何位置。

Ajax的最大特點的就是很好的用戶體驗,大多數(shù)使用Ajax技術(shù)的web應(yīng)用程序,比同類沒有使用的web應(yīng)用程序的用戶體驗要好的多,盡管他們都能完成相類似的功能。例如,一個普通的用戶注冊頁面,如果用戶希望知道注冊的用戶名是否已經(jīng)注冊過了,那只能等提交表單到服務(wù)器以后并重新來到一個新的頁面,才知道用戶名是否可用,這種情況每次單擊按鈕都會導(dǎo)致幾秒鐘的延遲和屏幕刷新,但事實上頁面改動的地方卻只有很少一部分,Ajax正在打破這種狀況,是頁面再無刷新的情況下,完成某些與服務(wù)器的交互功能。大大提高了用戶的體驗感。

2,Ajax不是單一的技術(shù),而是四種技術(shù)的集合,有javascript,css,DomXMLHttpRequestAjax程序是用javascript語言寫成的。Ajax程序可以使用CSS來控制頁面的樣式。DOM,指的是文本對象模型,它是一個web頁面的對象模型,可以用javascript來操作的頁面結(jié)構(gòu)。XMLHttpRequest對象用來在后臺向服務(wù)器端發(fā)送請求,數(shù)據(jù)的格式可以使任何的文本格式,如XML、純文本。他也是Ajax進(jìn)行異步通信的關(guān)鍵元素。

這四種技術(shù)各司其職,其中javascript是其他三中的粘合劑,javascript可以通過修改DOM的結(jié)構(gòu)來改變界面,或者完全改變DOM的結(jié)構(gòu)來重新繪制用戶界面;XMLHttpRequest對象則用來與服務(wù)器進(jìn)行異步通信,javascript也正是通過控制他來提交請求和獲取最新數(shù)據(jù)的。

Ajax也會大量使用DHTML進(jìn)行編程,并且它與服務(wù)器端的異步通信能力使得一個web頁面的使用壽命大大增長,用戶交互性大大增強了。JavaWeb課題設(shè)計報告全文共41頁,當(dāng)前為第18頁。Ajax技術(shù)的優(yōu)缺點:

作為富客戶端技術(shù)之一的Ajax的最大優(yōu)點,就是再不更新整個頁面的前提下維護數(shù)據(jù)。這使得web應(yīng)用程序能夠更為迅捷的回應(yīng)用戶動作,并避免了在網(wǎng)絡(luò)上發(fā)送那些沒有改變過的信息。與其他富客戶端技術(shù)不同,Ajax不需要任何瀏覽器插件,直接通過瀏覽器內(nèi)置的javascript控制瀏覽器的內(nèi)容和行為即可。而其他的富客戶端技術(shù)往往需要安裝插件,并且以一個單獨的進(jìn)程來運行這些富客戶端,一旦處理不當(dāng),很可能造成速度很慢的后果。

缺點:就是Ajax在不同的瀏覽器運行時,由于各個瀏覽器之間的差異,是的開發(fā)者在眾多不同的平臺和瀏覽器上經(jīng)過嚴(yán)格的測試,但是隨著Ajax技術(shù)的成熟,一些簡化跨平臺的Ajax程序庫,也相繼問世,程序員可以使用這些運行庫進(jìn)行Ajax的開發(fā),也不擔(dān)心Ajax的跨平臺性。還有一個缺點就是;他動態(tài)改變的內(nèi)容無法保存到本地或通過收藏夾來保存。這其實是因為Ajax改變?yōu)g覽器的內(nèi)容和行為,往往是通過修改網(wǎng)頁的DOM和CSS來控制的,這些新消息都僅僅在瀏覽器窗口沒關(guān)之前存在于內(nèi)存里。

Ajax更適合有少量頁面內(nèi)容需要改變的客戶端編程,如果頁面的大多說內(nèi)容都需要改變的時候,還是建議使用讓整個頁面刷新的方式較好。JavaWeb課題設(shè)計報告全文共41頁,當(dāng)前為第18頁。2.4監(jiān)控用戶在線狀態(tài)在聊天室程序中需要實時監(jiān)控用戶在線狀態(tài),當(dāng)用戶非正常退出時(如:沒有單擊“退出聊天室”按鈕,也沒有單擊窗口的關(guān)閉“按鈕”,而是直接將頁面轉(zhuǎn)向其他網(wǎng)站),能夠保證將該用戶從列表中刪除??梢詰?yīng)用Servlet中的監(jiān)聽器(HttpBingListener接口)實現(xiàn)此效果。2.5JSP技術(shù)JSP(JavaServerPages)是由SunMicrosystems公司倡導(dǎo)、許多公司參與一起建立的一種動態(tài)網(wǎng)頁技術(shù)標(biāo)準(zhǔn)。JSP技術(shù)有點類似ASP技術(shù),它是在傳統(tǒng)的網(wǎng)頁HTML文件(*.htm,*.html)中插入Java程序段(Scriptlet)和JSP標(biāo)記(tag),從而形成JSP文件(*.jsp)。用JSP開發(fā)的Web應(yīng)用是跨平臺的,即能在Linux下運行,也能在其他操作系統(tǒng)上運行。JSP技術(shù)使用Java編程語言編寫類XML的tags和scriptlets,來封裝產(chǎn)生動態(tài)網(wǎng)頁的處理邏輯。網(wǎng)頁還能通過tags和scriptlets訪問存在于服務(wù)端的資源的應(yīng)用邏輯。JSP將網(wǎng)頁邏輯與網(wǎng)頁設(shè)計和顯示分離,支持可重用的基于組件的設(shè)計,使基于Web的應(yīng)用程序的開發(fā)變得迅速和容易。Web服務(wù)器在遇到訪問JSP網(wǎng)頁的請求時,首先執(zhí)行其中的程序段,然后將執(zhí)行結(jié)果連同JSP文件中的HTML代碼一起返回給客戶。插入的Java程序段可以操作數(shù)據(jù)庫、重新定向網(wǎng)頁等,以實現(xiàn)建立動態(tài)網(wǎng)頁所需要的功能。JSP與JavaServlet一樣,是在服務(wù)器端執(zhí)行的,通常返回該客戶端的就是一個HTML文本,因此客戶端只要有瀏覽器就能瀏覽。JSP的1.0規(guī)范的最后版本是1999年9月推出的,12月又推出了1.1規(guī)范。目前較新的是JSP1.2規(guī)范,JSP2.0規(guī)范的征求意見稿也已出臺。JSP頁面由HTML代碼和嵌入其中的Java代碼所組成。服務(wù)器在頁面被客戶端請求以后對這些Java代碼進(jìn)行處理,然后將生成的HTML頁面返回給客戶端的瀏覽器。JavaServlet是JSP的技術(shù)基礎(chǔ),而且大型的Web應(yīng)用程序的開發(fā)需要JavaServlet和JSP配合才能完成。JSP具備了Java技術(shù)的簡單易用,完全的面向?qū)ο螅哂衅脚_無關(guān)性且安全可靠,主要面向因特網(wǎng)的所有特點。JavaWeb課題設(shè)計報告全文共41頁,當(dāng)前為第19頁。JSP技術(shù)的強勢(1)一次編寫,到處運行。在這一點上Java比PHP更出色,除了系統(tǒng)之外,代碼不用做任何更改。(2)系統(tǒng)的多平臺支持?;旧峡梢栽谒衅脚_上的任意環(huán)境中開發(fā),在任意環(huán)境中進(jìn)行系統(tǒng)部署,在任意環(huán)境中擴展。相比ASP/PHP的局限性是顯而易見的。(3)強大的可伸縮性。從只有一個小的Jar文件就可以運行Servlet/JSP,到由多臺服務(wù)器進(jìn)行集群和負(fù)載均衡,到多臺Application進(jìn)行事務(wù)處理,消息處理,一臺服務(wù)器到無數(shù)臺服務(wù)器,Java顯示了一個巨大的生命力。(4)多樣化和功能強大的開發(fā)工具支持。這一點與ASP很像,Java已經(jīng)有了許多非常優(yōu)秀的開發(fā)工具,而且許多可以免費得到,并且其中許多已經(jīng)可以順利的運行于多種平臺之下。JSP技術(shù)的弱勢(1)與ASP一樣,Java的一些優(yōu)勢正是它致命的問題所在。正是由于為了跨平臺的功能,為了極度的伸縮能力,所以極大的增加了產(chǎn)品的復(fù)雜性。(2)Java的運行速度是用class常駐內(nèi)存來完成的,所以它在一些情況下所使用的內(nèi)存比起用戶數(shù)量來說確實是“最低性能價格比”了。從另一方面,它還需要硬盤空間來儲存一系列的.java文件和.class文件,以及對應(yīng)的版本文件。JSP六種內(nèi)置對象:request,response,out,session,application,config,pagecontext,page,exception.一.request對象:該對象封裝了用戶提交的信息,通過調(diào)用該對象相應(yīng)的方法可以獲取封裝的信息,即使用該對象可以獲取用戶提交信息。二.response對象:對客戶的請求做出動態(tài)的響應(yīng),向客戶端發(fā)送數(shù)據(jù)。三.session對象1.什么是session:session對象是一個JSP內(nèi)置對象,它在第一個JSP頁面被裝載時自動創(chuàng)建,完成會話期管理。從一個客戶打開瀏覽器并連接到服務(wù)器開始,到客戶關(guān)閉瀏覽器離開這個服務(wù)器結(jié)束,被稱為一個會話。當(dāng)一個客戶訪問一個服務(wù)器時,可能會在這個服務(wù)器的幾個頁面之間反復(fù)連接,反復(fù)刷新一個頁面,服務(wù)器應(yīng)當(dāng)通過某種辦法知道這是同一個客戶,這就需要session對象。2.session對象的ID:當(dāng)一個客戶首次訪問服務(wù)器上的一個JSP頁面時,JSP引擎產(chǎn)生一個session對象,同時分配一個String類型的ID號,JSP引擎同時將這個ID號發(fā)送到客戶端,存放在Cookie中,這樣session對象和客戶之間就建立了一一對應(yīng)的關(guān)系。當(dāng)客戶再訪問連接該服務(wù)器的其他頁面時,不再分配給客戶新的session對象,直到客戶關(guān)閉瀏覽器后,服務(wù)器端該客戶的session對象才取消,并且和客戶的會話對應(yīng)關(guān)系消失。當(dāng)客戶重新打開瀏覽器再連接到該服務(wù)器時,服務(wù)器為該客戶再創(chuàng)建一個新的session對象。四.a(chǎn)plication對象1.什么是application:服務(wù)器啟動后就產(chǎn)生了這個application對象,當(dāng)客戶再所訪問的網(wǎng)站的各個頁面之間瀏覽時,這個application對象都是同一個,直到服務(wù)器關(guān)閉。但是與session不同的是,所有客戶的application對象都是同一個,即所有客戶共享這個內(nèi)置的application對象。2.a(chǎn)pplication對象常用方法:(1)publicvoidsetAttribute(Stringkey,Objectobj):將參數(shù)Object指定的對象obj添加到application對象中,并為添加的對象指定一個索引關(guān)鍵字。(2)publicObjectgetAttribute(Stringkey):獲取application對象中含有關(guān)鍵字的對象。五.out對象out對象是一個輸出流,用來向客戶端輸出數(shù)據(jù)。out對象用于各種數(shù)據(jù)的輸出。JavaWeb課題設(shè)計報告全文共41頁,當(dāng)前為第19頁。JavaWeb課題設(shè)計報告全文共41頁,當(dāng)前為第20頁。JavaWeb課題設(shè)計報告全文共41頁,當(dāng)前為第20頁。第三章系統(tǒng)分析與設(shè)計3.1系統(tǒng)分析3.1.1聊天室功能需求分析用戶登錄,包括用戶是否在線實時顯示在線人員列表及在線人數(shù)用戶發(fā)言,包括顯示聊天內(nèi)容和滾屏顯示聊天信息安全退出聊天室,包括單擊關(guān)閉按鈕退出聊天室。3.1.2聊天室功能性能分析普通用戶能夠登錄的聊天室進(jìn)行文本的聊天,能夠方便的實現(xiàn)公共交談、選擇顏色、添加文字表情等。可以用Ajax實現(xiàn)無刷新操作。3.2系統(tǒng)運行環(huán)境在開發(fā)聊天室系統(tǒng)時,需要具備下面的軟件環(huán)境:服務(wù)器端:操作系統(tǒng):WindowsXP。Web服務(wù)器:Tomcat6.0。Java開發(fā)包:MyEclipse。客戶器端:IE6.0。3.3項目流程圖和系統(tǒng)預(yù)覽JavaWeb課題設(shè)計報告全文共41頁,當(dāng)前為第21頁。(1)項目流程圖JavaWeb課題設(shè)計報告全文共41頁,當(dāng)前為第21頁。聊天室的系統(tǒng)流程,如圖3-1圖3-1項目流程圖(2)為了是使大家對本模塊有一定的了解,下面將給出聊天室的主界面預(yù)覽效果圖。聊天室的登錄界面如圖3-2登錄界面.輸入用戶名,然后單擊“進(jìn)入”按鈕,將進(jìn)入聊天室的主界面,如圖3-3主界面。JavaWeb課題設(shè)計報告全文共41頁,當(dāng)前為第22頁。JavaWeb課題設(shè)計報告全文共41頁,當(dāng)前為第22頁。圖3-2登錄界面JavaWeb課題設(shè)計報告全文共41頁,當(dāng)前為第23頁。圖3-3主界面JavaWeb課題設(shè)計報告全文共41頁,當(dāng)前為第23頁。第四章系統(tǒng)的實現(xiàn)4.1用戶登錄模塊當(dāng)用戶訪問聊天室時,首先進(jìn)入的是登錄聊天室頁面。在該頁面中,用戶輸入自己喜歡的用戶名,如圖4-1登錄界面,單擊進(jìn)入按鈕,系統(tǒng)將判斷輸入的用戶名是否被占用,如果被占用將給出提示。圖4-1登錄界面<%pagecontentType="text/html"pageEncoding="UTF-8"%><html><title>聊天室</title><linkhref="CSS/style.css"rel="stylesheet"><scriptlanguage="javascript">functioncheck(){if(form1.username.value==""){alert("請輸入用戶名!");form1.username.focus();returnfalse; }elseif(form1.username.value=="\'"){alert("請不要輸入非法字符!");form1.username.focus();returnfalse;}}</script><body><br>JavaWeb課題設(shè)計報告全文共41頁,當(dāng)前為第24頁。<formname="form1"method="post"action="Messages?action=loginRoom"onSubmit="returncheck()">JavaWeb課題設(shè)計報告全文共41頁,當(dāng)前為第24頁。<tablewidth="371"height="230"border="0"align="center"cellpadding="0"cellspacing="0"background="images/login.jpg"><tr><tdheight="158"colspan="3"class="word_dark"> </td></tr><tr><tdwidth="53"align="center"valign="top"class="word_dark"> </td><tdwidth="216"align="center"valign="top"class="word_dark">用戶名:<inputtype="text"name="username"class="login"></td><tdwidth="94"valign="top"class="word_dark"><inputname="Submit"type="submit"class="btn_bg"value="進(jìn)入"></td></tr></table> </form></body></html>4.2聊天室主體功能模塊在用戶登錄頁面中輸入用戶名,單擊“進(jìn)入”按鈕即可進(jìn)去聊天室的主界面。如圖4-2聊天室主體功能模塊,在頁面中包括頁面頭部、在線人員列表區(qū)、聊天內(nèi)容顯示區(qū)和用戶發(fā)言區(qū)4部分。圖4-2聊天室主體功能模塊4.3實時獲取并顯示在線人員列表JavaWeb課題設(shè)計報告全文共41頁,當(dāng)前為第25頁。在設(shè)計聊天室程序時,為了讓用戶及時了解在線用戶,并與其他用戶交流,需要提供實時獲取并顯示在線人員列表的功能。這小節(jié)介紹聊天室的主界面中,左側(cè)顯示在線人員列表及在線人數(shù)。如圖4-3在線人員列表圖。JavaWeb課題設(shè)計報告全文共41頁,當(dāng)前為第25頁。圖4-3在線人員列表圖為了實時顯示在線人員列表,這里應(yīng)用了Ajax技術(shù)。實現(xiàn)實時顯示在線人員列表的具體步驟如下:1、編寫自定義的JavaScript函數(shù)showOnline(),用于實例化Ajax對象,showOline()函數(shù)的具體代碼如下:functionshowOnline(){varloader=newnet.AjaxRequest("online.jsp?nocache="+newDate().getTime(),deal_online,onerror,"GET");}其中?nocache="+newDate().getTime()的用處是更新在線人員列表。2、Ajax進(jìn)行異步請求目標(biāo)的URL地址是onlin.jsp,即JSP文件。在該文件中,主要是將保存在集合類中的在線人員列表顯示到頁面。Online.jsp頁面的代碼如下:<%pagecontentType="text/html"pageEncoding="UTF-8"%><%pageimport=".wgh.model.UserInfo"%><%pageimport="java.util.*"%><%UserInfolist=UserInfo.getInstance();Vectorvector=list.getList();intamount=0;%><tablewidth="100%"border="0"cellpadding="0"cellspacing="0">JavaWeb課題設(shè)計報告全文共41頁,當(dāng)前為第26頁。<tr><tdheight="32"align="center"class="word_orange">歡迎來到心之語聊天室!</td></tr>JavaWeb課題設(shè)計報告全文共41頁,當(dāng)前為第26頁。<tr><tdheight="23"align="center"><ahref="#"onclick="set('所有人')">所有人</a></td></tr><%if(vector!=null&&vector.size()>0){Stringusername=""; amount=vector.size();for(inti=0;i<amount;i++){username=(String)vector.elementAt(i);%><tr><tdheight="23"align="center"><ahref="#"onclick="set('<%=username%>')"><%=username%></a></td></tr><%}}%><tr><tdheight="30"align="center">當(dāng)前在線[<fontcolor="#FF6600"><%=amount%></font>]人</td></tr></table>3、在聊天室的主界面中,將左側(cè)用于顯示在線人員列表的單元格的id屬性設(shè)置為online,用于實時顯示在線人員列表,具體代碼如下:<tdwidth="165"valign="top"bgcolor="#f6fded"id="online"style="padding:5px">在線人員列表</td>4、編寫Ajax的回調(diào)函數(shù)deal_online(),用于將獲取的在線人員列表賦值給id為online的<td>標(biāo)記的innerHYML屬性。Deal_online()函數(shù)的具體代碼如下:functiondeal_online(){online.innerHTML=this.req.responseText;}5、為了讓頁面載入后就調(diào)用Ajax獲取在線人員列表,并且每隔10秒鐘便獲取一次數(shù)據(jù),還需要在頁面中添加JavaScript代碼,具體代碼如下:window.setInterval("showOnline();",10000);window.onload=function(){showOnline();//當(dāng)頁面載入后顯示在線人員列表4.4實現(xiàn)用戶發(fā)言在聊天室程序中一個必不可少的功能就是實現(xiàn)用戶發(fā)言,設(shè)計中,用戶發(fā)言區(qū)位于聊天室主界面的底部,如圖:4-4用戶發(fā)言模塊。圖4-4用戶發(fā)言模塊實現(xiàn)用戶發(fā)言的具體步驟如下:JavaWeb課題設(shè)計報告全文共41頁,當(dāng)前為第27頁。1、在頁面的合適位置添加用于收集用戶發(fā)言信息的表單及表單元素,關(guān)鍵代碼如下:JavaWeb課題設(shè)計報告全文共41頁,當(dāng)前為第27頁。<formaction=""name="form1"method="post"><tdheight="30"align="left"> </td><tdheight="37"align="left"><inputname="from"type="hidden"value="${username}">[${username}]對<inputname="to"type="text"value=""size="35"readonly="readonly">表情<selectname="face"class="wenbenkuang"><optionvalue="無表情的">無表情的</option><optionvalue="微笑著"selected>微笑著</option><optionvalue="笑呵呵地">笑呵呵地</option><optionvalue="熱情的">熱情的</option><optionvalue="溫柔的">溫柔的</option><optionvalue="紅著臉">紅著臉</option><optionvalue="幸福的">幸福的</option><optionvalue="嘟著嘴">嘟著嘴</option><optionvalue="熱淚盈眶的">熱淚盈眶的</option><optionvalue="依依不舍的">依依不舍的</option><optionvalue="得意的">得意的</option><optionvalue="神秘兮兮的">神秘兮兮的</option><optionvalue="惡狠狠的">惡狠狠的</option><optionvalue="大聲的">大聲的</option><optionvalue="生氣的">生氣的</option><optionvalue="幸災(zāi)樂禍的">幸災(zāi)樂禍的</option><optionvalue="同情的">同情的</option><optionvalue="遺憾的">遺憾的</option><optionvalue="正義凜然的">正義凜然的</option><optionvalue="嚴(yán)肅的">嚴(yán)肅的</option><optionvalue="慢條斯理的">慢條斯理的</option><optionvalue="無精打采的">無精打采的</option></select>說:</td><tdwidth="189"align="left">  字體顏色:<selectname="color"size="1"class="wenbenkuang"id="select"><optionselected>默認(rèn)顏色</option><optionstyle="color:#FF0000"value="FF0000">紅色熱情</option><optionstyle="color:#0000FF"value="0000ff">藍(lán)色開朗</option>JavaWeb課題設(shè)計報告全文共41頁,當(dāng)前為第28頁。<optionstyle="color:#ff00ff"value="ff00ff">桃色浪漫</option>JavaWeb課題設(shè)計報告全文共41頁,當(dāng)前為第28頁。<optionstyle="color:#009900"value="009900">綠色青春</option><optionstyle="color:#009999"value="009999">青色清爽</option><optionstyle="color:#990099"value="990099">紫色拘謹(jǐn)</option><optionstyle="color:#990000"value="990000">暗夜興奮</option><optionstyle="color:#000099"value="000099">深藍(lán)憂郁</option><optionstyle="color:#999900"value="999900">卡其制服</option><optionstyle="color:#ff9900"value="ff9900">鎦金歲月</option><optionstyle="color:#0099ff"value="0099ff">湖波蕩漾</option><optionstyle="color:#9900ff"value="9900ff">發(fā)亮藍(lán)紫</option><optionstyle="color:#ff0099"value="ff0099">愛的暗示</option><optionstyle="color:#006600"value="006600">墨綠深沉</option><optionstyle="color:#999999"value="999999">煙雨蒙蒙</option></select></td><tdwidth="19"align="left"><inputname="scrollScreen"type="checkbox"class="noborder"id="scrollScreen"onClick="checkScrollScreen()"value="1"checked></td></tr><tr><tdwidth="21"height="30"align="left"> </td><tdwidth="549"align="left"><inputname="content1"type="text"size="70"onKeyDown="if(event.keyCode==13&&event.ctrlKey){send();}"><inputname="Submit2"type="button"class="btn_grey"value="發(fā)送"onClick="send()"></td><tdalign="right"><inputname="button_exit"type="button"class="btn_grey"value="退出聊天室"onClick="Exit()"></td>聊天對象文本框設(shè)置為只讀屬性是用戶就不能手動輸入聊天對象,因此還需要提供選擇聊天對象的功能,可以通過在主頁面中添加選擇聊天對講的JavaScript自定義函數(shù)及在線人員列表中添加超鏈接實現(xiàn)。實現(xiàn)將選擇的聊天對象添加到聊天對象文本框的JavaScript代碼如下:functionset(selectPerson){ //自動添加聊天對象if(selectPerson!="${username}"){form1.to.value=selectPerson;}else{alert("請重新選擇聊天對象!");}}JavaWeb課題設(shè)計報告全文共41頁,當(dāng)前為第29頁。2、編寫自定義的JavaScript函數(shù)send(),用于調(diào)用Ajax實現(xiàn)用戶發(fā)言。在函數(shù)中,首先驗證用戶輸入信息的合法性然后再將提交的表單的內(nèi)容連接為一個參數(shù)字符串,最后實例化Ajax對象。Send()函數(shù)的具體代碼如下:JavaWeb課題設(shè)計報告全文共41頁,當(dāng)前為第29頁。functionsend(){ //驗證聊天信息并發(fā)送if(form1.to.value==""){alert("請選擇聊天對象!");returnfalse;}if(form1.content1.value==""){alert("發(fā)送信息不可以為空!");form1.content1.focus();returnfalse;}Varparam="from="+form1.from.value+"&face="+form1.face.value+"&color="+form1.color.value+"&to="+form1.to.value+"&content="+ form1.content1.value;varloader=newnet.AjaxRequest("Messages?action=sendMessage",deal_send,onerror,"POST",param);}3、在聊天室相關(guān)的Servlet實現(xiàn)類中添加發(fā)送聊天信息的方法sendMessages()。在該方法中,首先獲取用戶發(fā)言的相關(guān)信息,并將發(fā)言信息保存在應(yīng)用程序?qū)ο骃ervletContext中,然后通過RequsetDispatcher對象的forward()方法將請求轉(zhuǎn)發(fā)。SendMessages()方法的具體代碼如下:publicvoidsendMessages(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{response.setContentType("text/html;charset=UTF-8");request.setCharacterEncoding("UTF-8");Randomrandom=newRandom();Stringfrom=request.getParameter("from");//發(fā)言人Stringface=request.getParameter("face");//表情Stringto=request.getParameter("to");//接收者Stringcolor=request.getParameter("color");//字體顏色Stringcontent=request.getParameter("content");//發(fā)言內(nèi)容StringsendTime=newDate().toLocaleString();//發(fā)言時間ServletContextapplication=getServletContext();StringsourceMessage=application.getAttribute("message").toString();try{//發(fā)言時間JavaWeb課題設(shè)計報告全文共41頁,當(dāng)前為第30頁。sourceMessage+="<fontcolor='blue'><strong>"+from+"</strong></font><fontcolor='#CC0000'>"+face+"</font>對<fontcolor='green'>["+to+"]</font>說:"+"<fontcolor='"+color+"'>"+content+"</font>("+sendTime+")<br>";application.setAttribute("message",sourceMessage);request.getRequestDispatcher("Messages?action=getMessages&nocache="+random.nextInt(10000)).forward(request,response);JavaWeb課題設(shè)計報告全文共41頁,當(dāng)前為第30頁。}catch(Exceptionex){Logger.getLogger(Messages.class.getName()).log(Level.SEVERE,null,ex);}}4.5實時顯示聊天內(nèi)容在聊天室程序中另一個必不可少的功能就是顯示聊天內(nèi)容。這個版塊是在主界面的右側(cè),如圖4-5聊天內(nèi)容模塊。圖4-5聊天內(nèi)容模塊在實現(xiàn)顯示聊天內(nèi)容功能時,為了實時顯示聊天內(nèi)容,這里應(yīng)用了Ajax技術(shù),技術(shù)Ajax重構(gòu)的方法,實現(xiàn)實時顯示聊天內(nèi)容的具體步驟如下:1、編寫自定義的JavaScript函數(shù)showContent(),用于實例化Ajax對象。showContent()函數(shù)的具體代碼如下:functionshowContent(){varloader1=newnet.AjaxRequest("Messages?action=getMessages&nocache="+newDate().getTime(),deal_content,onerror,"GET");}JavaWeb課題設(shè)計報告全文共41頁,當(dāng)前為第31頁。2、從上可以看出,Ajax進(jìn)行異步請求目標(biāo)的URL地址為MessagesAction?action=getMessage。從該URL地址可以看出,在進(jìn)入主界面前會調(diào)用聊天室相關(guān)的Servlet實現(xiàn)類中的getMessages()。getMessage()方法的具體代碼如下:JavaWeb課題設(shè)計報告全文共41頁,當(dāng)前為第31頁。publicvoidgetMessages(HttpServletRequestrequest,HttpServletResponseresponse){response.setContentType("text/html;charset=UTF-8");try{request.getRequestDispatcher("content.jsp").forward(request,response);}catch(Exceptionex){Logger.getLogger(Messages.class.getName()).log(Level.SEVERE,null,ex);}}3、編寫顯示聊天內(nèi)容的JSP頁面content.jsp,在該頁面中只需要應(yīng)用EL表達(dá)式將返回的執(zhí)行結(jié)果輸出即可,具體代碼如下:<%pagecontentType="text/html"pageEncoding="UTF-8"%>${message}4、在聊天室主界面的右側(cè)俠士聊天內(nèi)容的單元格中添加一個id屬性為content的<div>標(biāo)記,用于實時顯示聊天內(nèi)容,具體代碼如下:<divstyle="height:290px;overflow:hidden"id="content">聊天內(nèi)容</div>5、編寫Ajax的回調(diào)函數(shù)deal_content(),在這個函數(shù)中,首先獲取Ajax處理頁面的返回值,然后取出字符串中的Unicode空白符,最后判斷在獲取信息時是否產(chǎn)生錯誤,如果是,則退出聊天室,否則將獲取的聊天內(nèi)容輔助給id為cotent的<div>標(biāo)記的innerHTML屬性,deal_content()函數(shù)的具體代碼如下:functiondeal_content(){varreturnValue=this.req.responseText; //獲取Ajax處理頁的返回值varh=returnValue.replace(/\s/g,""); //去除字符串中的Unicode空白符if(h=="error"){//alert("您的賬戶已經(jīng)過期,請重新登錄!");Exit();}else{content.innerHTML=sysBBS+returnValue+"</span>";document.getElementById('content').scrollTop=document.getElementById('content').scrollHeight*2; //當(dāng)聊天信息超過一屏?xí)r,設(shè)置最先發(fā)送的聊天信息不顯示}}6、為了讓頁面載入后就調(diào)用Ajax獲取聊天內(nèi)容,并且每隔一秒便獲取一次數(shù)據(jù),還需要在頁面中添加JavaScript代碼,具體代碼如下:JavaWeb課題設(shè)計報告全文共41頁,當(dāng)前為第32頁。window.setInterval("showOnline();",10000);JavaWeb課題設(shè)計報告全文共41頁,當(dāng)前為第32頁。window.onload=function(){showOnline();//當(dāng)頁面載入后顯示在線人員列表}4.6退出聊天室模塊在我設(shè)計的聊天室中提供了兩種退出聊天室的方法,一種是單擊主頁面中的“退出聊天室”按鈕,另一種是單擊瀏覽器的“關(guān)閉”按鈕。需要注意的是,無論采用哪種方法都會彈出如圖4-6退出提示。圖4-6退出提示實現(xiàn)安全退出聊天室的具體步驟如下:1、在主頁面的合適位置添加“退出聊天室”按鈕,并在按鈕的onClick事件中調(diào)用自定義的javaScript()函數(shù)Exit(),關(guān)鍵代碼如下:<inputname="button_exit"type="button"class="btn_grey"value="退出聊天室"onClick="Exit()">2、編寫自定義的JavaScript函數(shù)Exit(),在該函數(shù)中首先將頁面重定向到退出聊天室頁面leave.jsp,然后彈出“彈出歡迎您下次光臨!”對話框,具體代碼如下:functionExit(){window.location.href="leave.jsp";alert("歡迎您下次光臨!");}3、編寫退出聊天室的頁面leave.jsp,在該頁面中,首先銷毀Session,然后將頁面重新定向到登錄頁面。Leave.jsp頁面的完整代碼如下:<%pagecontentType="text/html"pageEncoding="UTF-8"%><%session.invalidate();response.sendRedirect("index.jsp");%>JavaWeb課題設(shè)計報告全文共41頁,當(dāng)前為第33頁。JavaWeb課題設(shè)計報告全文共41頁,當(dāng)前為第33頁。第三部分目錄 TOC\o"1-3"\h\zJavaWeb課題設(shè)計報告全文共41頁,當(dāng)前為第34頁。JavaWeb課題設(shè)計報告全文共41頁,當(dāng)前為第34頁。《照片上傳》照片上傳功能基于QQ相冊上傳照片,裁剪照片等功能的實現(xiàn),是一個簡單的上傳、裁剪、預(yù)覽、保存功能于一身。QQ相冊上傳照片,可以和朋友們一起共享自己喜愛的照片,將自己的照片存在服務(wù)器端,以便于保存,不易丟失,也可以同步更新、多設(shè)備共享等功能,本次課題就將實現(xiàn)一個簡單照片上傳、裁剪、預(yù)覽、保存模塊。用戶上傳照片:進(jìn)入上傳頁面后,單擊“點擊上傳照片”按鈕即可進(jìn)入上傳照片界面。然后,單擊“瀏覽”按鈕,選擇要上傳的按鈕,單擊“上傳”按鈕,即可上傳到服務(wù)器端。裁剪照片:通過拖動照片以裁剪滿意的頭像。預(yù)覽照片:在成功上傳照片后,在界面的左邊即可顯示要上傳的照片。保存功能:通過裁剪功能選擇出合適的頭像后,單擊“保存”按鈕即可保存。本系統(tǒng)開發(fā)平臺:Eclipse、JavaWeb開發(fā)語言本系統(tǒng)運行環(huán)境:windows7、Tomcat7.0.47、JDK1.7JavaWeb課題設(shè)計報告全文共41頁,當(dāng)前為第35頁。JavaWeb課題設(shè)計報告全文共41頁,當(dāng)前為第35頁。index.jsp用戶選擇上傳照片功能主界面uploadimage.jsp用戶上傳照片界面5.1.1.功能設(shè)計上傳照片界面提供用戶進(jìn)入上傳照片的鏈接地址,進(jìn)入另一個界面,提供上傳、裁剪功能的界面。5.1.2.上傳界面測試如圖1-5所示:JavaWeb課題設(shè)計報告全文共41頁,當(dāng)前為第36頁。JavaWeb課題設(shè)計報告全文共41頁,當(dāng)前為第36頁。JavaWeb課題設(shè)計報告全文共41頁,當(dāng)前為第37頁。5.2.1.功能設(shè)計JavaWeb課題設(shè)計報告全文共41頁,當(dāng)前為第37頁。用戶可通過拖動照片進(jìn)行裁剪,裁剪出自己喜歡的大小、位置的頭像。5.2.1.裁剪主界面設(shè)計效果如圖1-8所示:5.3.1功能設(shè)計用戶可對編輯好的照片進(jìn)行保存。JavaWeb課題設(shè)計報告全文共41頁,當(dāng)前為第38頁。5.3.2保存界面設(shè)計效果如圖1-13所示:JavaWeb課題設(shè)計報告全文共41頁,當(dāng)前為第38頁。[1]孫衛(wèi)琴.《Tomcat與JavaWeb開發(fā)技術(shù)詳解(第2版)》[M].:電子工業(yè)出版社,2009:1-220[2]黃嘉輝.《Java網(wǎng)絡(luò)程序設(shè)計》[M].:清華大學(xué)出版社,2002:445-470[3]谷雨,閻雋,高春蓉等譯.《JSP從入門到精通》[M].:電子工業(yè)出版社,2002:1-104[4]李緒成.《JavaWeb開發(fā)教程——入門與提高篇》[M].:清華大學(xué)出版社,2009:1-198[5]舒紅平.《Web數(shù)據(jù)庫編程:Java》[M].:西安電子科技大學(xué)出版社,2006:1-185[6]譚日森.Ajax技術(shù)的特點及發(fā)展前景[J].黑龍江科技信息,HYPERLINK"/kns55/oldNavi/Bridge.aspx?LinkType=IssueLink&

溫馨提示

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

最新文檔

評論

0/150

提交評論