陳宇
摘 要 隨著JAVA的普及和流行,J2EE平臺(tái)也在WEB開(kāi)發(fā)中發(fā)揮著越來(lái)越大的作用,伴隨其的各種新技術(shù)如雨后春筍般大量的涌出。為了更好的研究J2EE體系架構(gòu),本文采用了業(yè)界流行的 Struts、Hibernate和 Spring三種框架,實(shí)現(xiàn)了一個(gè)功能強(qiáng)大的高性能論壇社區(qū),從而在實(shí)踐中更深入的理解J2EE。
關(guān)鍵詞 JAVA J2EE 論壇 系統(tǒng)設(shè)計(jì) 程序設(shè)計(jì)
中圖分類號(hào):TP393 文獻(xiàn)標(biāo)識(shí)碼:A
1需求分析概述
SSH是Struts、Spring和Hibernate三種框架組合在一起的簡(jiǎn)稱。本文主要目的就是用SSH實(shí)現(xiàn)一個(gè)高性能,功能強(qiáng)大的論壇社區(qū)。從而真正的將這三個(gè)框架運(yùn)用在實(shí)際開(kāi)發(fā)的過(guò)程中。
論壇的整體設(shè)計(jì)與實(shí)現(xiàn)是建立在J2EE多層框架基礎(chǔ)上的,在做好需求的基礎(chǔ)上,要求充分利用J2EE平臺(tái)下的組件,利用J2EE平臺(tái)的先進(jìn)性,讓實(shí)現(xiàn)充分滿足系統(tǒng)的總體設(shè)計(jì),并讓最后的系統(tǒng)展現(xiàn)出良好的性能。
在當(dāng)今的信息時(shí)代,論壇已經(jīng)成為信息系統(tǒng)一個(gè)重要組成部分。一個(gè)社區(qū)論壇需要完成以下基本功能,發(fā)帖,回帖,會(huì)員注冊(cè),修改已有的話題等。同時(shí)還要提供管理員管理的后臺(tái)界面,管理員具有増加刪除主題、管理已經(jīng)注冊(cè)的用戶、選定版主、刪除黑名単上用戶、直接對(duì)帖子進(jìn)行修改等功能。但是用傳統(tǒng)的模式(如JSP+JavaBean)做出來(lái)的論壇也存在許多問(wèn)題:
(1)系統(tǒng)難以維護(hù):雖然有些論壇采用了MODEL2,但是老式論壇很少在持久層采用ORM的思想,這將導(dǎo)致持久層開(kāi)發(fā)時(shí)間過(guò)長(zhǎng),增大系統(tǒng)開(kāi)發(fā)成本,并且可移植性差等一系列問(wèn)題。甚至有些系統(tǒng)仍然采用MODEL1來(lái)開(kāi)發(fā),那就更難以維護(hù)了。
(2)系統(tǒng)難以擴(kuò)展:傳統(tǒng)論壇業(yè)務(wù)邏輯與持久層的數(shù)據(jù)處理部分經(jīng)常混在一起,很不清晰,這從某種程度上講增大了系統(tǒng)擴(kuò)展難度。當(dāng)你想増加項(xiàng)新功能的時(shí)候,往往會(huì)被以前那些混合在一起的邏輯搞的不知如何下手。
(3)系統(tǒng)難以升級(jí):老式論壇采用的有些技術(shù)已經(jīng)落伍,而我們現(xiàn)在用的新型框架都是當(dāng)今的主流,后面還有開(kāi)源社區(qū)的大力支持,這也為以后系統(tǒng)升級(jí)帶來(lái)了很大的便利。
(4)系統(tǒng)運(yùn)行效率不高:由于層次的混亂和設(shè)計(jì)的不先進(jìn)性,傳統(tǒng)論壇存在一些先天性的缺陷,這導(dǎo)致它的運(yùn)行效率不高,速度慢。
所以我們很有必要建立一種設(shè)計(jì)結(jié)構(gòu)更合理,系統(tǒng)邏輯更清晰,性能更高的新型論壇。
2系統(tǒng)總體設(shè)計(jì)概述
從功能實(shí)現(xiàn)方面講,該社區(qū)論壇主要有四個(gè)模塊,權(quán)限管理模塊、緩存設(shè)計(jì)模塊、用戶功能模塊和管理員功能模塊。
2.1權(quán)限管理模塊概述
權(quán)限管理是該論壇中一個(gè)很重要的組成部分,采用Spring的Acegi實(shí)現(xiàn)。 Acegi實(shí)際上就是基于Spring的IoC機(jī)制產(chǎn)生的一種開(kāi)源框架,后被Spring并入,成為Spring框架的一部分。
2.1.1角色授權(quán)管理
傳統(tǒng)的基于角色的授權(quán)管理系統(tǒng)以角色為核心,實(shí)現(xiàn)對(duì)資源的統(tǒng)一管理,管理起來(lái)方便清晰。但是單一的角色授權(quán)也存在一些缺點(diǎn),因?yàn)閷?duì)權(quán)限的一些變動(dòng)就可能需要增加新的角色,容易造成角色泛濫。
本文的主要角色有游客、普通用戶、版主、管理員四種。每種角色對(duì)應(yīng)的都有自己的權(quán)限,在分配角色的時(shí)候,實(shí)際上也就相當(dāng)于將權(quán)限一起分配。如果需要額外的權(quán)限授予,就用管理員帳號(hào)登陸以后再直接進(jìn)行授權(quán)分配。這樣一來(lái),一方面,系統(tǒng)中定義的角色顯得簡(jiǎn)單、清晰,另一方面,直接為用戶授權(quán)時(shí)也顯得直觀和簡(jiǎn)單,可以滿足實(shí)際系統(tǒng)中用戶的個(gè)性化權(quán)限需求。
2.1.2權(quán)限授權(quán)管理
單純的使用角色—權(quán)限分配在上一節(jié)里面已經(jīng)被認(rèn)為是不適宜的,為了更好的進(jìn)行權(quán)限管理,我們引入了權(quán)限授權(quán)管理。
權(quán)限授權(quán)管理就是說(shuō)除了通過(guò)用戶角色分配可以使用戶獲得權(quán)限外,管理員還可以直接對(duì)用戶進(jìn)行授權(quán)。這個(gè)時(shí)候,除了用戶對(duì)應(yīng)的本身角色所擁有的權(quán)限,它還會(huì)擁有管理員直接對(duì)它進(jìn)行授權(quán)所得到的權(quán)限。
2.2 緩存設(shè)計(jì)模塊概述
系統(tǒng)內(nèi)存的使用量總是有一定限制的。在高負(fù)載、高壓力的應(yīng)用中最忌諱對(duì)內(nèi)存的過(guò)多濫用。有效的使用緩存既可以降低內(nèi)存的使用總量又可以提升整體應(yīng)用的速度。
在大多數(shù)的應(yīng)用服務(wù)程序中,用戶請(qǐng)求處理的標(biāo)準(zhǔn)流程是將HTTP請(qǐng)求發(fā)送到Web服務(wù)器。之后服務(wù)器解析請(qǐng)求內(nèi)容的動(dòng)態(tài)頁(yè)面,并且把訪問(wèn)數(shù)據(jù)庫(kù)的請(qǐng)求發(fā)送到數(shù)據(jù)庫(kù)服務(wù)器上在等待數(shù)據(jù)庫(kù)返回結(jié)果后,整合整個(gè)頁(yè)面并將結(jié)果返回。
當(dāng)一個(gè)頁(yè)面首次被訪問(wèn)的時(shí)候,此時(shí)緩存里面還沒(méi)有該頁(yè)面,那么緩存將會(huì)把此頁(yè)面保存下來(lái)。第二次訪問(wèn)該頁(yè)面的時(shí)候,因?yàn)榫彺娣?wù)器里面已經(jīng)有了該頁(yè)面的緩存,就直接從緩存里面取出該頁(yè)面,從而大大提高了訪問(wèn)速度。
2.3用戶功能模塊概述
用戶功能模塊主要是針對(duì)用戶在論壇里面所具有的功能而設(shè)計(jì)的,一般情況下,用戶應(yīng)該具有下面幾個(gè)功能:
(1)注冊(cè)用戶:用戶注冊(cè)是論壇必須具備的業(yè)務(wù),只有注冊(cè)的用戶才能享受作為會(huì)員的權(quán)利,比如發(fā)主題帖子,上傳或者下載共享資源等。在用戶注冊(cè)的時(shí)候?qū)Ρ靥钚畔⒑鸵烟钚畔⒏袷揭鰴z測(cè),如果不符合要求需要給出報(bào)錯(cuò)提示。
(2)登錄系統(tǒng):登陸時(shí)候要驗(yàn)證用戶名和密碼,如果都吻合才能進(jìn)入登陸狀態(tài),如果驗(yàn)證不成功將提示用戶重新輸入。
(3)管理用戶自己的信息:包括用戶的詳細(xì)資料,更改登陸密碼等等。需要登陸以后才能更改。
(4)瀏覽論壇:被瀏覽內(nèi)容設(shè)置一定的級(jí)別限制,沒(méi)有登陸的用戶可以以游客的身份瀏覽論壇,但是有些內(nèi)容會(huì)看不到。
(5)發(fā)表主題帖子:用戶登陸以后,可以在自己喜歡的版面發(fā)表自己的主題。游客不能發(fā)。
(6)回復(fù)話題:登陸用戶看見(jiàn)自己想回的主題可以回復(fù),沒(méi)有登陸的用戶不允許進(jìn)行回復(fù)。
(7)版主功能:如果用戶被管理員選為版主,那么就擁有版主功能,版主可以在自己的版面對(duì)主題進(jìn)行管理,覺(jué)得好的主題可以置頂,設(shè)置為精華帖。同時(shí)可以在本版面置公告和通知等功能。
2.4管理員功能模塊概述
管理員模塊針對(duì)的是管理功能,管理員做為整個(gè)系統(tǒng)的管理者,對(duì)系統(tǒng)的維護(hù)具有舉足輕重的作用。詳細(xì)的功能如下:
(1)設(shè)置論壇基本信息:如論壇名稱,論壇網(wǎng)址,站點(diǎn)地址,站長(zhǎng)郵箱等等。
(2)打開(kāi)或者關(guān)閉論壇:如果論壇需要維護(hù)或者因某些原因需要停辦,則管理員有權(quán)利將該論壇關(guān)閉。
(3)封鎖某些IP或者過(guò)濾某些不雅文字:有些人在社區(qū)發(fā)表一些比較不文雅或者政治敏感的話題,為避免引起不必要的麻煩,管理員可以封鎖這些IP,禁止它們進(jìn)入論壇。
(4)制定發(fā)帖子的規(guī)范:比如文章的長(zhǎng)度,標(biāo)題最大字?jǐn)?shù)等等。
(5)用戶授權(quán):用戶里面設(shè)置等級(jí)和積分。到達(dá)一定積分以后,管理員有權(quán)授予用戶版主的稱號(hào),版主可以協(xié)助管理員管理社區(qū)。
3系統(tǒng)功能分析
論壇本質(zhì)上是為了用戶服務(wù)的,從用戶的一次完整的使用過(guò)程去分析論壇更能直觀的反映出論壇的功能。
用戶登陸成功后的頁(yè)面左邊部分是導(dǎo)航條,右邊部分是個(gè)人信息管理的一些鏈接和社區(qū)里面部分熱帖及公告、廣告等信息的顯示。
該頁(yè)面有很多鏈接,用戶點(diǎn)擊以后就可以實(shí)現(xiàn)對(duì)應(yīng)的功能。
(1)個(gè)人信息管理功能:該塊主要實(shí)現(xiàn)對(duì)用戶自身信息功能的管理。用戶登陸以后可以修改自己的信息,比如呢稱、通訊方式、聯(lián)系地址等等。同時(shí)用戶還可以編輯自己的好友。
(2)社區(qū)管理功能:左邊導(dǎo)航條里面有顯示,非版主點(diǎn)擊無(wú)效,版主點(diǎn)擊以后進(jìn)入社區(qū)管理板塊,在這里提供添加社區(qū)廠告、通知,添加黑名單等功能。
(3)瀏覽社區(qū)功能:點(diǎn)擊導(dǎo)航條內(nèi)的二級(jí)主題,就可以進(jìn)入相應(yīng)的社區(qū),在社區(qū)里面,需要提供用戶回復(fù)帖子和瀏覽帖子的功能,對(duì)于版主,還需要提供版主管理帖子的功能,比如版主能夠?qū)⒛骋惶又庙敗㈡i定、設(shè)為精華帖、刪除等等。
(4)社區(qū)管理功能:這是版主才有的功能,在這個(gè)版塊里面,各個(gè)版主可以對(duì)自己所管的社區(qū)進(jìn)行管理。提供添加公告、系統(tǒng)黑名單、添加廣告和社區(qū)活動(dòng)等功能。
(5)統(tǒng)計(jì)功能:用戶可以通過(guò)此功能,知道當(dāng)前在線人數(shù)等信息。
用戶和管理員的功能的綜合,即是該系統(tǒng)功能的主體,在實(shí)際的應(yīng)用中,為了滿足使用者的要求,在技術(shù)和支出允許的情況下,還需要對(duì)系統(tǒng)做不斷的修改和增強(qiáng),使它能夠更快更好的滿足用戶的要求。
4小結(jié)
本文用SSH多層框架實(shí)現(xiàn)了一個(gè)功能比較完善的論壇。并對(duì)原有的各框架進(jìn)行了一些擴(kuò)展和修改以便于更好的提高系統(tǒng)的性能。SSH多層框架的功能還是很強(qiáng)大的,例如Hibernate的延遲加載和緩存功能,Spring的聲明式事務(wù)管理功能和面向切面功能,Acegi的權(quán)限管理等等,充分的利用這些功能,系統(tǒng)會(huì)越加完善。同時(shí)還使用 OSCache框架實(shí)現(xiàn)了系統(tǒng)的緩存功能,進(jìn)一步提高了系統(tǒng)性能。
參考文獻(xiàn)
[1] 寇毅,吳力文.基于MVC設(shè)計(jì)模式的Struts框架的應(yīng)用方法[J].計(jì)算機(jī)應(yīng)用,2003,23(11):91-93.
[2] 陳天河.STRUTS,HIBERNATE,SPRING集成開(kāi)發(fā)寶典[M].電子工業(yè)出版社,2006.
[3] 涂智,李昊,袁理.基于J2EE的客運(yùn)信息管理系統(tǒng)數(shù)據(jù)持久層的JDBC解決方案[J].系統(tǒng)工程,2006(10).