版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、基于java web的學(xué)生信息交流和自主管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)摘要:現(xiàn)在網(wǎng)絡(luò)上有很多的社交網(wǎng)站,也有很多的用戶常駐其中,但由于他們受眾人群比較廣泛,用戶的年齡、職業(yè)的差別決定了這些網(wǎng)站必須做到通用性才能很好的讓大眾接受,因此他們也缺失了一些獨(dú)有的個(gè)性;在此背景上,決定做一個(gè)面向大學(xué)生自己的信息交流平臺(tái),讓大學(xué)生可以在上面做專屬于自己的事情,這樣就能更好地讓興趣相投的人一塊交流。這次的項(xiàng)目是面向?qū)W生這個(gè)特殊群體的,所以其中的模塊都是具有定制特性的,希望以此可以很好滿足用戶的期望。網(wǎng)絡(luò)已經(jīng)是大學(xué)生必不可少的東西,大學(xué)生也迫切的希望能在網(wǎng)絡(luò)盡情釋放自己,展現(xiàn)自己,這次的項(xiàng)目正是出于這個(gè)想法,借此打造出
2、具有獨(dú)特魅力的信息交流平臺(tái)。該項(xiàng)目主要是基于java web體系結(jié)構(gòu)實(shí)現(xiàn)的,開發(fā)工具為eclipse,以oracle作為數(shù)據(jù)存儲(chǔ)層,結(jié)合流行的開源框架struts2完成了項(xiàng)目的整體架構(gòu)。關(guān)鍵詞:信息交流 ;社交 ;java web ;struts2the design and implementation of students information exchange and independent management systemabstract: nowadays, there are a lot of social community web sites on the interne
3、t,and many users are used to communicating with each other through them.however,due to the wide range of customers,their different ages, and occupations, these sites must be no more ordinary in order that they can be accepted by the public.as a result ,it is no surprise that they will miss some uniq
4、ue personality.as for this phenomenon, i decide to develop an information exchanging platform for college students, so that students can do their own business.at the same time, more users sharing the same interests can communicate on it together.this project keeps focus on a special groupstudents ,a
5、nd all of the modules have certain properties,hoping that it can meet the users expectations. internet has become indispensable for the college students,and the students are eager to release themselves and show themselves.motivated by this idea, the project tries to create an information communicate
6、d platform with unique characters. this project is based on javaweb architecture, using eclipse as development tools and oracle as database.moreover,it is combined with popular open source framework,which is called struts2 ,to complete the overall structure .key words: information exchange;social;ja
7、va web;struts2目 錄1 前言(1)1.1開發(fā)背景(1)1.2 系統(tǒng)設(shè)計(jì)的目標(biāo)(1)2 相關(guān)技術(shù)介紹(1)2.1 jsp技術(shù)簡(jiǎn)介(1)2.2 開源框架struts2技術(shù)簡(jiǎn)介(1)2.3 oracle數(shù)據(jù)庫(kù)技術(shù)簡(jiǎn)介(2)2.4 jquery腳本庫(kù)技術(shù)簡(jiǎn)介(2)2.5 eclipse開發(fā)工具簡(jiǎn)介(3)3 系統(tǒng)的可行性研究與需求分析(3)3.1 可行性研究(3)3.1.1 技術(shù)可行性(3)3.1.2 經(jīng)濟(jì)可行性(3)3.1.3 營(yíng)運(yùn)可行性(3)3.2 需求分析(3)3.2.1 系統(tǒng)需求(3)3.2.2 性能需求(3)3.3 功能分析(4)4 系統(tǒng)總體設(shè)計(jì)(4)4.1 系統(tǒng)主要功能設(shè)計(jì)(4
8、)4.2 各模塊功能設(shè)計(jì)(5)4.3 數(shù)據(jù)庫(kù)設(shè)計(jì)(6)4.3.1 數(shù)據(jù)庫(kù)的邏輯結(jié)構(gòu)(6)4.3.2 數(shù)據(jù)庫(kù)的連接(10)5 系統(tǒng)詳細(xì)設(shè)計(jì)與實(shí)現(xiàn)(10)5.1 系統(tǒng)登陸模塊設(shè)計(jì)(10)5.2 系統(tǒng)注冊(cè)模塊設(shè)計(jì)(10)5.3 首頁(yè)模塊設(shè)計(jì)(11)5.4 博文模塊設(shè)計(jì)(12)5.4.1 瀏覽全部博文(12)5.4.2 發(fā)表博文(13)5.4.3 博文詳細(xì)(15)5.5 問答模塊設(shè)計(jì)(16)5.5.1 瀏覽全部問題(16)5.5.2 問答詳細(xì)(17)5.5.3 提出問題(18)5.6 個(gè)人中心設(shè)計(jì)(19)5.6.1 個(gè)人資料更新(19)5.6.2 個(gè)人內(nèi)容管理(20)5.6.3 后臺(tái)管理(20)6 系
9、統(tǒng)調(diào)試與測(cè)試(22)6.1 測(cè)試概論(22)6.2 程序的測(cè)試(22)6.2.1 學(xué)生登錄測(cè)試(22)6.2.2 學(xué)生注冊(cè)測(cè)試(23)6.2.3 發(fā)表博文測(cè)試(23)6.3 測(cè)試結(jié)果(24)結(jié)論(25)參考文獻(xiàn)(26)致謝(27)1 前言1.1開發(fā)背景 網(wǎng)絡(luò)已經(jīng)成為當(dāng)代大學(xué)生生活和學(xué)習(xí)中不可或缺的一樣?xùn)|西,生活中需要交流,學(xué)習(xí)上也需要交流。網(wǎng)絡(luò)正好滿足了這個(gè)需求,很多的社交網(wǎng)站也應(yīng)運(yùn)而生。網(wǎng)絡(luò)交流成為了大學(xué)生的日?;顒?dòng),離開了網(wǎng)絡(luò),很多大學(xué)生都會(huì)有一種孤獨(dú)感,或者被社會(huì)拋棄的感覺這正好反映了大學(xué)生對(duì)網(wǎng)絡(luò)的依賴性和網(wǎng)絡(luò)交流的重要性。大多數(shù)的社交網(wǎng)站用戶人群比較廣泛,用戶的年齡、職業(yè)的差別決定了這
10、些網(wǎng)站必須做到通用性才能很好的讓大眾接受,因此他們也缺失了一些獨(dú)有的個(gè)性。當(dāng)然,網(wǎng)上也有很多別具一格的社交論壇,里邊聚集著一群有共同愛好的人。在此背景上,我決定做一個(gè)面向大學(xué)生自己的信息交流平臺(tái),用屬于大學(xué)生的元素來(lái)吸引大學(xué)生在上面綻放自己年輕的光彩。1.2 系統(tǒng)設(shè)計(jì)的目標(biāo)這次的項(xiàng)目是針對(duì)大學(xué)生所做的,目的是為了設(shè)計(jì)出具有學(xué)校生活色彩的應(yīng)用系統(tǒng),讓使用者可以快速的融入其中?,F(xiàn)在的大學(xué)生迫切的需要有共享自己的想法的平臺(tái),本系統(tǒng)正是要滿足的這樣的需求。2 相關(guān)技術(shù)介紹2.1 jsp技術(shù)簡(jiǎn)介jsp是sun公司在web編程領(lǐng)域所開發(fā)的一項(xiàng)技術(shù),上面可以寫html標(biāo)簽,也可以寫一下java代碼進(jìn)行邏輯處
11、理,結(jié)合了顯示處理和后臺(tái)處理。受益于java語(yǔ)言的無(wú)平臺(tái)限制性,解釋jsp的中間件服務(wù)器可以運(yùn)行在任何裝有jvm環(huán)境的機(jī)器,代碼不需要做任何的修改。2.2 開源框架struts2技術(shù)簡(jiǎn)介struts 2是struts1的升級(jí)版本,它融合了webwork框架的優(yōu)點(diǎn),吸收了很多現(xiàn)在比較流行的軟件思想,受到很多的開發(fā)者的喜愛?,F(xiàn)在由apache開源組織進(jìn)行維護(hù)和升級(jí),每個(gè)開發(fā)者都可以貢獻(xiàn)自己的一份力量。struts2主要是對(duì)web編程中的請(qǐng)求控制進(jìn)行了進(jìn)一步的整合和封裝,簡(jiǎn)化了很多繁瑣復(fù)雜的工作,通過幾個(gè)簡(jiǎn)單的配置就可以讓開發(fā)者完成前臺(tái)到后臺(tái)的一系列流程。這樣可以讓開發(fā)者把精力放在業(yè)務(wù)邏輯的處理,而
12、不用重復(fù)的進(jìn)行請(qǐng)求的處理,一定程度上提高了開發(fā)效率。圖2.1為struts2的工作流程:圖2.1 struts2工作原理2.3 oracle數(shù)據(jù)庫(kù)技術(shù)簡(jiǎn)介oracle數(shù)據(jù)庫(kù)系統(tǒng)是一種企業(yè)級(jí)的關(guān)系型數(shù)據(jù)庫(kù),由美國(guó)oracle公司(甲骨文)開發(fā)。它比較適合一些大中型的企業(yè)應(yīng)用。oracle數(shù)據(jù)庫(kù)系統(tǒng)是現(xiàn)今數(shù)據(jù)庫(kù)系統(tǒng)中對(duì)數(shù)據(jù)庫(kù)設(shè)計(jì)原理實(shí)現(xiàn)的最為完整的數(shù)據(jù)庫(kù),安全性很高,適合一些對(duì)信息安全有很高要求的系統(tǒng)開發(fā)。oracle現(xiàn)在的版本為oracle database 12c,其對(duì)數(shù)據(jù)庫(kù)云進(jìn)行了很好的支持,對(duì)處理大數(shù)據(jù)提供了不錯(cuò)的支撐。2.4 jquery腳本庫(kù)技術(shù)簡(jiǎn)介jquery是一個(gè)開源的js腳本庫(kù),
13、全球使用人數(shù)很高,也有很多的開發(fā)者在對(duì)其進(jìn)行優(yōu)化和擴(kuò)展。它主要優(yōu)點(diǎn)是能夠兼容多種瀏覽器,對(duì)不同的瀏覽器內(nèi)核進(jìn)行了很好的兼容。使用jquery可以對(duì)dom進(jìn)行很多操作,也可以讓開發(fā)者做出很多動(dòng)態(tài)顯示特效。另外,它封裝的ajax功能也是非常簡(jiǎn)便易用,功能強(qiáng)大。jquery提供了豐富的api供開發(fā)者使用,利用它可以很輕松的開發(fā)出強(qiáng)大的web系統(tǒng)。2.5 eclipse開發(fā)工具簡(jiǎn)介eclipse是一種功能強(qiáng)大的集成開發(fā)工具,主要用于java語(yǔ)言的開發(fā)。它提供了豐富的快捷鍵,讓開發(fā)者可以利用純鍵盤進(jìn)行快速的編程。eclipse允許開發(fā)者在其提供的api基礎(chǔ)上開發(fā)特殊需求的插件,此插件可以完美的融合到ec
14、lipse上,很大程度上增強(qiáng)的它自身的功能,方便了開發(fā)者的開發(fā)。另外,它提供的debug調(diào)試功能對(duì)于排查開發(fā)過程中難以發(fā)現(xiàn)的bug起到了很明顯的作用。3 系統(tǒng)的可行性研究與需求分析3.1 可行性研究3.1.1 技術(shù)可行性技術(shù)方面主要使用了比較流行的struts2框架,網(wǎng)上相關(guān)資料比較豐富,實(shí)現(xiàn)起來(lái)相對(duì)容易。數(shù)據(jù)庫(kù)oracle也是比較成熟的數(shù)據(jù)庫(kù),應(yīng)對(duì)本系統(tǒng)也不會(huì)出現(xiàn)性能問題。其他的技術(shù)像ajax也有很多豐富的實(shí)例,不存在無(wú)法實(shí)現(xiàn)的問題。由此可知,技術(shù)上是可行的。3.1.2 經(jīng)濟(jì)可行性本系統(tǒng)的開發(fā)過程中所使用的資源均屬于開源免費(fèi)的,不需要額外支付費(fèi)用,開發(fā)人員上也不需要很大的需求,所以產(chǎn)生的費(fèi)用
15、也不是很大,系統(tǒng)后期的部署和維護(hù)也是相對(duì)比較容易,對(duì)服務(wù)器的要求也不是很苛刻,所有開支不是很大,所以,經(jīng)濟(jì)上是可行的。3.1.3 營(yíng)運(yùn)可行性本系統(tǒng)主要是針對(duì)大學(xué)生所開發(fā)的應(yīng)用系統(tǒng),在潛在用戶量這方面是很客觀的,營(yíng)運(yùn)過程中,宣傳也是比較簡(jiǎn)單,同學(xué)之間相互了解是很有效的宣傳方式。所以在運(yùn)行上是可行的。3.2 需求分析在系統(tǒng)開發(fā)之前,需求分析是很關(guān)鍵的。一個(gè)好的需求直接決定了系統(tǒng)開發(fā)的成敗。需求分析主要是了解用戶的主觀想法,借此來(lái)總結(jié)需要實(shí)現(xiàn)的功能以及實(shí)現(xiàn)過程中的細(xì)節(jié)。3.2.1 系統(tǒng)需求對(duì)于該系統(tǒng)的實(shí)現(xiàn)方式,java是很好的選擇。因?yàn)閖ava在web方向上有很多成熟的體系結(jié)構(gòu),它是經(jīng)過了很多人驗(yàn)證
16、后確實(shí)可行的方案,所以使用起來(lái)會(huì)比較容易。3.2.2 性能需求系統(tǒng)運(yùn)行過程中會(huì)產(chǎn)生很多的數(shù)據(jù),在數(shù)據(jù)到大一定量以后,就會(huì)導(dǎo)致系統(tǒng)性能問題。所以在實(shí)現(xiàn)方式上,數(shù)據(jù)源方面需要使用連接池加快訪問數(shù)據(jù)庫(kù)的速度,后期在服務(wù)器上需要提高服務(wù)器的配置,以達(dá)到要求的運(yùn)行速度。3.3 功能分析學(xué)生信息交流平臺(tái)主要包括首頁(yè)展示,博文模塊,問答模塊,個(gè)人中心和關(guān)于。其中首頁(yè)主要是對(duì)博文和問答的一系列展示,包括最新博文,最新圖文,熱門博文,各類型博文,以及最新的待解決問題,另外還包括活躍學(xué)生的排行展示;博文模塊主要是對(duì)博文展示,發(fā)表博文,回復(fù)博文,查找博文等一系列的用戶操作;問答模塊就是對(duì)學(xué)生用戶所提問題的展現(xiàn)和其他
17、學(xué)生對(duì)其進(jìn)行回答的展示,另外,提問者還可以對(duì)自己滿意的回答進(jìn)行采納,此時(shí)問題狀態(tài)改為已解決;個(gè)人中心主要有基本資料,密碼,頭像的更新,另外可以管理自己的博文和問答,實(shí)現(xiàn)用戶的自主管理;此外,學(xué)生還會(huì)有自己相應(yīng)的角色,比如管理員,博文管理員,問答管理員,普通用戶,對(duì)應(yīng)的角色可以管理整個(gè)系統(tǒng)的相應(yīng)模塊,這樣就使用戶具備了后臺(tái)管理員的部分權(quán)限,默認(rèn)情況下,管理員具有所有權(quán)限,只有管理員可以管理系統(tǒng)的所有學(xué)生用戶;關(guān)于模塊就是對(duì)整個(gè)系統(tǒng)的介紹。4 系統(tǒng)總體設(shè)計(jì)4.1 系統(tǒng)主要功能設(shè)計(jì)圖4.1 功能模塊圖該系統(tǒng)主要有:首頁(yè)展示,博文模塊,問答模塊,個(gè)人中心模塊和關(guān)于模塊。其中博文模塊下有包括查看博文,發(fā)
18、表博文,回復(fù)博文和按類別、用戶、標(biāo)題查詢博文;問答模塊下有提出問題,回答問題,采納問題,查找答案等;個(gè)人中心包括用戶個(gè)人資料,密碼,頭像的修改,以及對(duì)自己博文和問答的查閱與更新,個(gè)人中心還包括后臺(tái)管理部分,用戶可以根據(jù)自己的權(quán)限做相應(yīng)的操作。圖4.1為學(xué)生信息交流平臺(tái)的功能模塊圖。4.2 各模塊功能設(shè)計(jì)主要功能有:1. 用戶登錄注冊(cè):注冊(cè)時(shí)對(duì)用戶輸入的信息進(jìn)行有效驗(yàn)證,并對(duì)已經(jīng)注冊(cè)用戶名進(jìn)行提示,防止出現(xiàn)同樣的用戶名。2. 博文模塊:對(duì)所有博文進(jìn)行分頁(yè)展示,可以根據(jù)類別,用戶名,標(biāo)題進(jìn)行查詢,點(diǎn)擊博文進(jìn)入博文詳細(xì),可以瀏覽博文內(nèi)容和回復(fù)詳細(xì),回復(fù)具有一級(jí)回復(fù)和二級(jí)回復(fù),可對(duì)二級(jí)回復(fù)進(jìn)行隱藏和顯
19、示,另外可以點(diǎn)擊發(fā)表博文來(lái)表達(dá)自己的觀點(diǎn)。3. 問答模塊:對(duì)最新的問題進(jìn)行展示,可以根據(jù)關(guān)鍵字模糊查詢問題,點(diǎn)擊問題進(jìn)入問題詳細(xì),可以查看問題詳情和回答列表,如果是提問人,還可以對(duì)滿意的答案進(jìn)行采納,同樣也可以提出問題等待別人回答。4. 個(gè)人中心:首先包括對(duì)個(gè)人資料的更新,其中有個(gè)人基本資料,個(gè)人密碼,個(gè)人頭像;還有就是對(duì)自己的博文和問答的管理。個(gè)人中心還包括后臺(tái)的管理,用戶可以根據(jù)自己的權(quán)限來(lái)管理相應(yīng)的模塊。5. 關(guān)于:對(duì)本系統(tǒng)的一個(gè)介紹,讓用戶對(duì)系統(tǒng)有個(gè)全面的認(rèn)識(shí)。4.3 數(shù)據(jù)庫(kù)設(shè)計(jì)4.3.1 數(shù)據(jù)庫(kù)的邏輯結(jié)構(gòu)數(shù)據(jù)庫(kù)設(shè)計(jì)需要滿足一些嚴(yán)格的約束和規(guī)則。要搞清楚實(shí)體和表之間的對(duì)應(yīng)關(guān)系,還有他們
20、之間的各種聯(lián)系。設(shè)計(jì)過程要充分考慮數(shù)據(jù)冗余與性能上的平衡,盡量在表的設(shè)計(jì)上做到最優(yōu)。學(xué)生信息交流平臺(tái)的數(shù)據(jù)庫(kù)包含下列數(shù)據(jù)表:(1)學(xué)生信息表主要用于保存注冊(cè)用戶的各類信息,包括用戶名,密碼,昵稱,郵箱等。表4.1 學(xué)生信息表(student)名稱類型可為空注釋stunonumber(8)學(xué)生編號(hào)stuaccountvarchar2(45)y賬號(hào)stupasswordvarchar2(45)y密碼stusexvarchar2(4)y性別stunicknamevarchar2(50)y昵稱stubirthdatey生日stuphotovarchar2(100)y頭像stuhobbyvarchar2
21、(100)y愛好stuyxvarchar2(100)y院系stuzyvarchar2(100)y專業(yè)stuemailvarchar2(100)y郵箱stutelvarchar2(40)y手機(jī)statusintegery狀態(tài)roleidnumber(2)y角色idregdatedatey注冊(cè)日期 (2)用戶角色表主要用于保存注冊(cè)用戶的角色信息。表4.2 用戶角色表(role)名稱類型可為空注釋roleidnumber(2)角色idrolenamevarchar2(20)y角色名rolevaluenumber(4)y角色權(quán)限值 (3)用戶權(quán)限表主要用于保存注冊(cè)用戶操作的各類權(quán)限。表4.3 用戶權(quán)限
22、表(permission)名稱類型可為空注釋pidnumber(4)權(quán)限idpnamevarchar2(45)y權(quán)限名稱purlvarchar2(100)y路徑 (4)博文表主要用于保存博文的各類信息,包括標(biāo)題,內(nèi)容,時(shí)間,發(fā)布人等。表4.4 博文信息表(blog)名稱類型可為空注釋blogidvarchar2(20)博文idblogtitlevarchar2(100)y博文標(biāo)題blogcontentvarchar2(4000)y博文內(nèi)容blogtagvarchar2(20)y博文標(biāo)簽blogreadnumber(8)y瀏覽數(shù)blogreplynumber(8)y回復(fù)數(shù)blogtimedate
23、y發(fā)布時(shí)間stunonumber(8)y發(fā)布人編號(hào) (5)博文一級(jí)回復(fù)表主要用于保存注冊(cè)博文的一級(jí)回復(fù),包括id,內(nèi)容,時(shí)間,博文id等。表4.5 博文一級(jí)回復(fù)表(replyone)名稱類型可為空注釋roneidvarchar2(20)回復(fù)idronecontentvarchar2(500)y回復(fù)內(nèi)容ronedatedatey回復(fù)時(shí)間stunonumber(8)y回復(fù)人編號(hào)blogidvarchar2(20)y所回復(fù)博文 (6)博文二級(jí)回復(fù)表主要用于保存注冊(cè)博文的二級(jí)回復(fù),包括id,內(nèi)容,時(shí)間,一級(jí)回復(fù)id等。表4.6 博文二級(jí)回復(fù)表(replytwo)名稱類型可為空注釋rtwoidvarch
24、ar2(20)回復(fù)idrtwocontentvarchar2(500)y回復(fù)內(nèi)容rtwodatedatey回復(fù)時(shí)間stunonumber(8)y回復(fù)人編號(hào)roneidvarchar2(20)y一級(jí)回復(fù)id (7)問題表主要用于保存注冊(cè)問題的各類信息,包括問題標(biāo)題,內(nèi)容,時(shí)間,問題狀態(tài)等。表4.7 問題表(ask)名稱類型可為空注釋askidvarchar2(20)問題編號(hào)asktitlevarchar2(100)y問題標(biāo)題askcontentvarchar2(2000)y問題內(nèi)容askreadnumber(8)y閱讀數(shù)askanswernumber(8)y回答數(shù)asktimedatey提問時(shí)間
25、stunonumber(8)y提問人編號(hào)statusintegery問題狀態(tài) (8)回答表主要用于保存回答的各類信息,包括回答內(nèi)容,回答時(shí)間,是否采納等。表4.8 回答表(answer)名稱類型可為空注釋answeridvarchar2(20)回答idanswercontentvarchar2(1000)y回答內(nèi)容answertimedatey回答時(shí)間agreecountnumber(8)y贊同數(shù)acceptintegery是否被采納(0未采納 1已采納)stunonumber(8)y回答人編號(hào)askidvarchar2(20)y問題id (9)圖片表主要用于保存圖片的各類信息,包括圖片名稱,
26、圖片路徑,對(duì)應(yīng)表名稱,對(duì)應(yīng)記錄,上傳時(shí)間等。表4.9 圖片表(pics)名稱類型可為空注釋picidvarchar2(20)y圖片idpicnamevarchar2(100)y圖片名稱picurlvarchar2(100)y圖片路徑tablenamevarchar2(20)y對(duì)應(yīng)表名稱recodeidvarchar2(20)y對(duì)應(yīng)記錄iduptimedatey上傳時(shí)間4.3.2 數(shù)據(jù)庫(kù)的連接本系統(tǒng)運(yùn)用了dbcp數(shù)據(jù)庫(kù)連接池來(lái)提高數(shù)據(jù)庫(kù)的連接效率。dbcp是 apache組織上的一個(gè) java 連接池項(xiàng)目,同時(shí)也是 tomcat 使用的連接池組件。系統(tǒng)中使用dbcp需要3個(gè)jar包:common
27、s-pool.jar,commons-collections.jar; commons-dbcp.jar。系統(tǒng)中頻繁的建立數(shù)據(jù)庫(kù)連接是非常耗費(fèi)資源的操作,所以dbcp連接池會(huì)預(yù)先創(chuàng)建一些連接存在內(nèi)存中維護(hù),這樣系統(tǒng)中需要用到連接的時(shí)候直接去池中取,省掉了臨時(shí)創(chuàng)建的時(shí)間,提高了運(yùn)行效率。首先需要在meta-inf中加入數(shù)據(jù)庫(kù)連接池配置文件context.xml,然后配置監(jiān)聽器初始化數(shù)據(jù)源,之后代碼中就可以使用getdatasource()得到的數(shù)據(jù)源來(lái)獲取數(shù)據(jù)庫(kù)連接。5 系統(tǒng)詳細(xì)設(shè)計(jì)與實(shí)現(xiàn)5.1 系統(tǒng)登陸模塊設(shè)計(jì)登陸模塊主要功能就是驗(yàn)證用戶輸入的用戶名密碼是否正確,如果輸入有誤就進(jìn)行相應(yīng)的提示,
28、如果登陸成功就跳轉(zhuǎn)到首頁(yè)。圖5.1為登陸頁(yè)面:圖5.1 系統(tǒng)登陸界面登陸過程使用jquery實(shí)現(xiàn)的ajax方式進(jìn)行后臺(tái)的驗(yàn)證,驗(yàn)證結(jié)果通過js動(dòng)態(tài)的顯示在頁(yè)面上,填寫完登陸信息發(fā)送請(qǐng)求到后臺(tái),此時(shí)會(huì)經(jīng)過struts2的攔截器interceptor來(lái)查詢?cè)撚脩舻木唧w權(quán)限,并保存到session中。這樣就可以方便的在具體的操作中判斷用戶是否具有該權(quán)限,也可以根據(jù)用戶的權(quán)限動(dòng)態(tài)的顯示頁(yè)面上的模塊。5.2 系統(tǒng)注冊(cè)模塊設(shè)計(jì)圖5.2 系統(tǒng)注冊(cè)界面注冊(cè)模塊是用戶從游客到會(huì)員的必經(jīng)之道,只有注冊(cè)的用戶才能進(jìn)行發(fā)表博文,提問題等一系列操作。圖5.2為注冊(cè)頁(yè)面。首先,當(dāng)用戶輸入用戶名以后會(huì)去異步請(qǐng)求后臺(tái),驗(yàn)證該
29、用戶名是否已經(jīng)注冊(cè),如果已經(jīng)注冊(cè)就禁止該用戶名的重復(fù)注冊(cè),接著會(huì)對(duì)密碼和重復(fù)密碼進(jìn)行有效性驗(yàn)證,判斷兩次密碼輸入是否一致,并作相應(yīng)提示。另外,還有對(duì)郵箱和手機(jī)的合法性驗(yàn)證,主要是使用了正則表達(dá)式。其中,驗(yàn)證郵箱合法性的正則為:/w+w+.w+$/,驗(yàn)證手機(jī)合法性的正則為:/(131-9|155-9|182-9)d8$/。這樣就可以有效的避免用戶的惡意輸入。最后注冊(cè)成功后就會(huì)跳轉(zhuǎn)到登陸界面,并且用戶名輸入框已經(jīng)默認(rèn)帶有用戶剛注冊(cè)成功的用戶名,方便了用戶登陸。5.3 首頁(yè)模塊設(shè)計(jì)登陸成功后進(jìn)入首頁(yè),首頁(yè)主要是對(duì)平臺(tái)中內(nèi)容的全面展示。圖5.3為系統(tǒng)首頁(yè):圖5.3 系統(tǒng)首頁(yè)首先會(huì)有一個(gè)圖片輪播,展示的
30、是最新的博文中所夾帶的圖片,點(diǎn)擊圖片可以查看該博文詳細(xì),然后就是對(duì)熱門博文以及各種類型博文的展示。5.4 博文模塊設(shè)計(jì)5.4.1 瀏覽全部博文點(diǎn)擊導(dǎo)航欄的博文選項(xiàng),首先會(huì)進(jìn)入到全部博文的頁(yè)面,上邊顯示的是根據(jù)發(fā)表時(shí)間的降序排列的所有博文的分頁(yè)顯示。左側(cè)有博文的各個(gè)分類,點(diǎn)擊某個(gè)分類可以選擇瀏覽具體分類的博文。下方還有博文搜索的輸入框,可以根據(jù)輸入的關(guān)鍵字按照標(biāo)題或博主搜索相關(guān)內(nèi)容。具體顯示如圖5.4:圖5.4 博文縱覽頁(yè)在blog.jsp中全部博文處只是一個(gè)空的div,頁(yè)面上所顯示的內(nèi)容都是在頁(yè)面剛開始加載時(shí)動(dòng)態(tài)的去后臺(tái)請(qǐng)求,然后數(shù)據(jù)返回到另外一個(gè)bloglist.jsp的頁(yè)面中進(jìn)行組織,最后
31、把整個(gè)頁(yè)面加載進(jìn)了剛才的空白div,代碼如下:$(document).ready(function()$(#showdiv).load(/stuinfo/blog_findbytag.action?timestamp=+(new date().gettime(););5.4.2 發(fā)表博文點(diǎn)擊博文頁(yè)面中的發(fā)表博文按鈕就會(huì)進(jìn)入到發(fā)表博文的頁(yè)面,在進(jìn)入頁(yè)面前,會(huì)判斷當(dāng)前有沒有用戶登陸,如果沒有登陸就提示請(qǐng)登錄然后跳轉(zhuǎn)到登陸頁(yè)面,這樣可以有效避免游客的非法操作。頁(yè)面如圖5.5:圖5.5 發(fā)表博文頁(yè)其中用到了第三方插件ckeditor,這是一個(gè)富文本編輯器插件,可以取代原始的textarea文本域進(jìn)行豐
32、富的文本輸入,在此基礎(chǔ)上又額外添加了上傳圖片的功能,使發(fā)表的博文可以圖文并茂,更加生動(dòng)。在標(biāo)題框輸入標(biāo)題時(shí),右上角的字?jǐn)?shù)會(huì)實(shí)時(shí)的變化,提示用戶當(dāng)前的字?jǐn)?shù),如果超過最大值就會(huì)將輸入框邊框變?yōu)榧t色來(lái)提醒用戶輸入非法。填寫完畢,點(diǎn)擊發(fā)表按鈕,表單中的數(shù)據(jù)會(huì)提交到后臺(tái)進(jìn)行處理。其中,為了避免用戶的惡意js注入,對(duì)輸入的內(nèi)容進(jìn)行了特殊字符轉(zhuǎn)義處理,替換提交內(nèi)容中的, , &。還要對(duì)博文內(nèi)容進(jìn)行解析,判斷是否含有圖片,如果包含則需要提取出來(lái)進(jìn)行單獨(dú)的圖片上傳和保存。其中用到了正則表達(dá)式對(duì)內(nèi)容中圖片路徑的格式進(jìn)行匹配,正則表達(dá)式為:bsrc=(+)。代碼如下:/如果博文中包含img標(biāo)記if(blogcont
33、ent.indexof(img) != -1)ipicsbiz picsbiz = new picsbizimpl();pattern pattern = ppile(bsrc=(+);matcher matcher = pattern.matcher(blogcontent);while(matcher.find()if(matcher.group(1).indexof(ckeditor/plugins/) != -1)continue;pics pic = new pics();pic.setpicname(this.blog.getblogtitle();pic.setpicurl(ma
34、tcher.group(1);pic.setrecodeid(blogid);pic.settablename(blog);pic.setuptime(new date();picsbiz.addpic(pic);5.4.3 博文詳細(xì)博文詳細(xì)頁(yè)主要是對(duì)博文的具體內(nèi)容,博主的信息以及該博文回復(fù)信息的一系列展示,如圖5.6。詳細(xì)頁(yè)左側(cè)會(huì)顯示發(fā)表該博文的用戶的詳細(xì)信息,右側(cè)是該博文的詳細(xì),包括博文標(biāo)題,博文類別,發(fā)表時(shí)間和博文內(nèi)容。下方就是所有的回復(fù)列表,回復(fù)包括一級(jí)回復(fù)和二級(jí)回復(fù),其中每條回復(fù)又有相應(yīng)的回復(fù)人信息。這個(gè)就涉及到數(shù)據(jù)的對(duì)應(yīng)關(guān)系,一條回復(fù)對(duì)應(yīng)唯一的一個(gè)用戶,一篇博文對(duì)應(yīng)多條一級(jí)回復(fù),一
35、條一級(jí)回復(fù)又對(duì)應(yīng)多條二級(jí)回復(fù)。所以就需要特定的數(shù)據(jù)結(jié)構(gòu)來(lái)存儲(chǔ)其對(duì)應(yīng)關(guān)系,使用onetoone泛型類來(lái)表示一對(duì)一的關(guān)系,使用onetomany 來(lái)表示一對(duì)多的關(guān)系,這樣查詢數(shù)據(jù)庫(kù)時(shí),按照其要求的結(jié)果組裝數(shù)據(jù),將其封裝到對(duì)應(yīng)的一對(duì)一或一對(duì)多實(shí)體bean中,傳到前臺(tái)進(jìn)行顯示。封裝的部分代碼如下:/封裝一級(jí)回復(fù)與對(duì)應(yīng)的二級(jí)回復(fù)listonetomanyonetoone, onetoone data = null;if(replyones != null)data = new arraylistonetomanyonetoone, onetoone(replyones.size();for(replyo
36、ne replyone : replyones)student student = this.studentbiz.findbystuno(replyone.getstuno();onetoone entity = new onetoone(replyone, student);listonetoone many = this.replytwobiz.findallbyroneid( and roneid=? , replyone.getroneid();data.add(new onetomanyonetoone, onetoone(entity, many);點(diǎn)擊一級(jí)回復(fù)中的回復(fù)按鈕會(huì)彈出
37、一個(gè)新的div層,彈出方式為淡出淡入,該實(shí)現(xiàn)是運(yùn)用了jquery的動(dòng)態(tài)效果。在該彈出層中對(duì)一級(jí)回復(fù)進(jìn)行二次回復(fù);另外,右上角的收起回復(fù)點(diǎn)擊可以將二級(jí)回復(fù)隱藏,同時(shí)收起回復(fù)變?yōu)檎归_回復(fù),再次點(diǎn)擊可顯示二級(jí)回復(fù)。圖5.6 博文詳細(xì)頁(yè)5.5 問答模塊設(shè)計(jì)5.5.1 瀏覽全部問題點(diǎn)擊導(dǎo)航欄有問必答進(jìn)入到問答頁(yè)面,主要有按提問時(shí)間降序排列的問題列表,按照關(guān)鍵字搜索答案的搜索框以及提出問題的按鈕。界面如圖5.7:圖5.7 有問必答頁(yè)5.5.2 問答詳細(xì)問答詳細(xì)主要是對(duì)問題的具體展現(xiàn),包括問題的標(biāo)題,內(nèi)容,提問時(shí)間,提問人以及被瀏覽次數(shù)等,下方還會(huì)有對(duì)該問題的具體回答列表。如果該問題是已采納狀態(tài),則問題下方
38、會(huì)顯示所采納的答案。右側(cè)還會(huì)有最新的幾條待解決問題供其他用戶瀏覽。界面如圖5.8:圖5.8 問答詳細(xì)頁(yè)如果當(dāng)前登錄用戶為該問題的提問人,則在每條回答的后面會(huì)有采納的按鈕,點(diǎn)擊采納會(huì)將該答案設(shè)為最佳答案,并將問題狀態(tài)設(shè)為已解決。此時(shí),所有回答的采納按鈕將不會(huì)再顯示,避免重復(fù)采納。5.5.3 提出問題提出問題頁(yè)同發(fā)表博文頁(yè)基本一致,同樣是引用了第三方富文本編輯器插件ckeditor來(lái)進(jìn)行問題的編輯,同樣具有圖片上傳功能。5.6 個(gè)人中心設(shè)計(jì)5.6.1 個(gè)人資料更新在個(gè)人中心,用戶可以對(duì)自己的個(gè)人資料進(jìn)行查看和更新,其中包括基本信息的更新,用戶密碼的更新和用戶頭像的更新。1. 基本信息的更新包括用戶
39、生日,昵稱,性別,愛好,手機(jī),郵箱等的更新,同樣也有相應(yīng)的有效性驗(yàn)證來(lái)保證用戶輸入的合法。 界面如圖5.9:圖5.9 基本資料更新2. 個(gè)人密碼更新必須輸入原始密碼才能修改,當(dāng)用戶輸入完畢,發(fā)送請(qǐng)求到后臺(tái),后臺(tái)會(huì)對(duì)原始密碼進(jìn)行校驗(yàn),如果不正確會(huì)提示舊密碼不正確。3. 個(gè)人頭像更新會(huì)提供一個(gè)屬性為file的input節(jié)點(diǎn)用于選擇文件,后臺(tái)使用struts2的封裝好的file對(duì)象進(jìn)行上傳處理。而且會(huì)對(duì)文件的格式進(jìn)行驗(yàn)證,如果不是.jpg,.png,.gif,.jpeg中的其中一種,則上傳失敗,頁(yè)面上顯示格式不正確提示用戶。5.6.2 個(gè)人內(nèi)容管理在內(nèi)容管理模塊中,用戶可以對(duì)自己的博文和問答進(jìn)行刪除
40、和更新。博文管理中,用戶可以根據(jù)關(guān)鍵字,博文類別和博文日期進(jìn)行相應(yīng)的篩選,選出符合條件的博文進(jìn)行管理。管理過程中,可以批量操作,提供了全選,反選和批量刪除的按鈕方便用戶操作。界面如圖5.10:圖5.10 我的博文管理查詢中會(huì)根據(jù)用戶所選擇的的過濾條件進(jìn)行針對(duì)性的篩選,對(duì)用戶選擇的條件進(jìn)行過濾,沒有選擇的則默認(rèn)不作為過濾條件。其中關(guān)鍵的就是動(dòng)態(tài)的拼接查詢sql語(yǔ)句。5.6.3 后臺(tái)管理本系統(tǒng)將后臺(tái)管理融入到了個(gè)人中心,實(shí)現(xiàn)了自我管理。每個(gè)用戶都有自己的權(quán)限,用戶可以根據(jù)自己的權(quán)限在個(gè)人中心進(jìn)行相應(yīng)的后臺(tái)管理。1. 權(quán)限原理介紹 后臺(tái)管理頁(yè)面中的用戶管理,博文管理,問答管理都是根據(jù)登陸用戶的權(quán)限列
41、表動(dòng)態(tài)顯示的。下表為用戶權(quán)限表:表5.1 權(quán)限具體條目表權(quán)限id權(quán)限名權(quán)限路徑1用戶管理/role_findall.action2博文管理/jsp/personal/manager/blogmanager.jsp4問答管理/jsp/personal/manager/askmanager.jsp下表為用戶角色表:表5.2 角色具體條目表角色id角色名角色值1超級(jí)管理員72博文管理員23問答管理員40普通用戶0其中,權(quán)限的id值分別設(shè)為了1,2,4;角色表中超級(jí)管理員具有所有的權(quán)限,所以其角色值為1+2+4=7;博文管理員只具有博文管理的權(quán)限,所以其角色值為2,同理問答管理員角色值為4;普通用戶沒
42、有任何權(quán)限,所以其角色值為0。這樣分配以后,用戶登陸后可以根據(jù)用戶的角色值來(lái)判斷該用戶是否具有某個(gè)權(quán)限。例如:想要判斷角色值為7的超級(jí)管理員是否具有用戶管理的權(quán)限,則需要計(jì)算該角色值按位與用戶管理權(quán)限id的結(jié)果,即7&1 != 0,如果不等于0就說明該用戶具有此權(quán)限。此方法是巧妙的利用了按位與的特性,只要符合這樣的規(guī)則,就可以很簡(jiǎn)單的判斷對(duì)應(yīng)角色的對(duì)應(yīng)權(quán)限。2. 用戶管理在用戶管理中,管理員可以根據(jù)不同的篩選條件來(lái)選擇符合條件的用戶列表。同時(shí),可以控制特定用戶是否有效,無(wú)效的禁止登陸,另外還可以修改用戶的角色,讓某個(gè)用戶具有特定的權(quán)限。界面如圖5.11:圖5.11 用戶管理3. 博文管理博文管
43、理中,同樣可以根據(jù)博主,博文標(biāo)簽,關(guān)鍵字和起止時(shí)間進(jìn)行查詢。在查詢出的博文列表中會(huì)列出博主昵稱,博文標(biāo)題,博文標(biāo)簽和發(fā)表時(shí)間,管理員可以進(jìn)行刪除和批量刪除。4. 問答管理問答管理中,管理員可以根據(jù)提問人,問題狀態(tài),關(guān)鍵字和提問時(shí)間進(jìn)行查詢,列表中也會(huì)相應(yīng)的列舉出提問人昵稱,問題標(biāo)題,問題狀態(tài)和提問時(shí)間。管理員可以進(jìn)行刪除和批量刪除。6 系統(tǒng)調(diào)試與測(cè)試6.1 測(cè)試概論軟件測(cè)試在系統(tǒng)開發(fā)過程中是必不可少的一個(gè)環(huán)節(jié),一個(gè)好的系統(tǒng)必然是在發(fā)布前經(jīng)歷了系統(tǒng)全面的測(cè)試。其在軟件工程學(xué)上也是有很重要的地位,因?yàn)樗苯記Q定了一個(gè)系統(tǒng)的好與壞。軟件測(cè)試有很多種測(cè)試方法,比如白盒測(cè)試,黑盒測(cè)試,還有程序員經(jīng)常說的
44、冒煙測(cè)試,這些測(cè)試方法都能夠很有效的發(fā)現(xiàn)系統(tǒng)潛在的漏洞。只有全面的測(cè)試才能保證項(xiàng)目的正常發(fā)布。6.2 程序的測(cè)試6.2.1 學(xué)生登錄測(cè)試登錄過程主要是對(duì)用戶名密碼的合法性判斷,測(cè)試用例如下:表6.1 登錄測(cè)試用例編號(hào)測(cè)試項(xiàng)用例目的輸入數(shù)據(jù)實(shí)際結(jié)果結(jié)果比較說明001學(xué)生登陸測(cè)試用戶名密碼為空是否可登陸用戶名:空密碼:空提示輸入用戶名,輸入密碼符合002學(xué)生登陸測(cè)試用戶名不存在,是否可登陸用戶名:555密碼:555提示用戶名不存在符合003學(xué)生登陸測(cè)試密碼輸入錯(cuò)誤是否可登陸用戶名:admin密碼:555提示密碼錯(cuò)誤符合6.2.2 學(xué)生注冊(cè)測(cè)試注冊(cè)信息包括用戶名,密碼,昵稱,生日,愛好,郵箱和手機(jī)等
45、,測(cè)試過程主要是對(duì)這些信息的驗(yàn)證,測(cè)試用例如下:表6.2 注冊(cè)測(cè)試用例編號(hào)測(cè)試項(xiàng)用例目的輸入數(shù)據(jù)實(shí)際結(jié)果結(jié)果比較說明001學(xué)生注冊(cè)測(cè)試已注冊(cè)用戶名是否可注冊(cè)用戶名:admin提示用戶名已存在符合002學(xué)生注冊(cè)測(cè)試兩次密碼不同是否可注冊(cè)密碼:123重復(fù)密碼:456提示兩次密碼不一致符合003學(xué)生注冊(cè)測(cè)試郵箱格式不合法是否可注冊(cè)郵箱:1111.ss提示郵箱格式不正確符合004學(xué)生注冊(cè)手機(jī)格式不正確是否可注冊(cè)手機(jī):111222233手機(jī)格式不正確符合6.2.3 發(fā)表博文測(cè)試發(fā)表博文需要填寫博文的標(biāo)題,博文類型和博文內(nèi)容,要對(duì)標(biāo)題的長(zhǎng)度,博文內(nèi)容進(jìn)行驗(yàn)證,測(cè)試用例如下:表6.3 發(fā)表博文測(cè)試用例編號(hào)測(cè)試項(xiàng)用例目的輸入數(shù)據(jù)實(shí)際結(jié)果結(jié)果比較說明001發(fā)表博文測(cè)試標(biāo)題為空是否可發(fā)表標(biāo)題:空標(biāo)題輸
溫馨提示
- 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- AI賦能創(chuàng)意產(chǎn)業(yè)的未來(lái)商業(yè)模式
- 利用科技手段提升減肥心理調(diào)適效果
- 辦公室中的學(xué)生心理健康教育
- 農(nóng)村電子商務(wù)與農(nóng)產(chǎn)品電商的協(xié)同發(fā)展研究
- 幼兒園新輪狀病毒安全教育
- 企業(yè)服務(wù)熱線管理與客戶關(guān)系建立
- 企業(yè)安全教育培訓(xùn)內(nèi)容與方法探討
- 企業(yè)文化中創(chuàng)新型團(tuán)隊(duì)的培育之道
- 勞動(dòng)合同范本標(biāo)準(zhǔn)版
- 以小見大家庭教育中的微觀世界教育
- 小學(xué)數(shù)學(xué)教育現(xiàn)狀與發(fā)展趨勢(shì)分析
- 新版袁行霈中國(guó)文學(xué)史第3版
- 特殊教育概論第二版PPT完整全套教學(xué)課件
- 臨床藥學(xué)基地管理細(xì)則
- 中藥飲片采購(gòu)配送服務(wù)投標(biāo)方案
- 中國(guó)流行音樂 課件-2022-2023學(xué)年高中音樂湘教版(2019)必修音樂鑒賞下篇
- 《商務(wù)禮儀》案例分析題匯編
- 孫子兵法-湖南大學(xué)中國(guó)大學(xué)mooc課后章節(jié)答案期末考試題庫(kù)2023年
- 新湘少版英語(yǔ)四年級(jí)上冊(cè):unit10 Welcome to our home!說課稿
- 國(guó)開機(jī)考《建筑工程質(zhì)量檢驗(yàn)》
- 軍隊(duì)文職招聘考試-數(shù)量關(guān)系100題
評(píng)論
0/150
提交評(píng)論