版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、1個(gè)人博客系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)年級(jí)專(zhuān)業(yè):學(xué)號(hào):姓名:計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院摘要:隨著手機(jī)、平板等手持終端訪(fǎng)問(wèn)設(shè)備的普及,越來(lái)越多的用戶(hù)希望通過(guò)網(wǎng)絡(luò)平臺(tái)進(jìn)行互動(dòng)交流,同時(shí)展現(xiàn)自己的個(gè)性,傳播自己的思想,而通過(guò)個(gè)人博客發(fā)布信息是一個(gè)使用頻率較高的方式。本課題建立一個(gè)交互簡(jiǎn)捷的博客系統(tǒng),方便在校學(xué)生發(fā)布信息進(jìn)行交流,可以將個(gè)人生活經(jīng)驗(yàn)或?qū)W習(xí)筆記心得等發(fā)布到系統(tǒng)中,方便其他同學(xué)的查看討論。這能極大地促進(jìn)同學(xué)間思想交流和互動(dòng),擴(kuò)大了同學(xué)的交際圈,并且在擴(kuò)大獲取信息的渠道的同時(shí),還能提高學(xué)習(xí)興趣,增加生活情趣。系統(tǒng)使用Java+JSP+Tomcat+MySQL技術(shù)實(shí)現(xiàn)。關(guān)鍵詞:個(gè)人博客,Blog,Web應(yīng)用,J
2、SP,MySQL隨著手機(jī)、平板等手持終端訪(fǎng)問(wèn)設(shè)備的普及,普適計(jì)算越來(lái)越滲入人們的生活。跟隨發(fā)展的就是個(gè)性化服務(wù),如網(wǎng)絡(luò)發(fā)布、簽名、預(yù)約等都被極大地賦予了個(gè)人特色,越來(lái)越多的用戶(hù)希望通過(guò)網(wǎng)絡(luò)平臺(tái)進(jìn)行互動(dòng)交流,同時(shí)展現(xiàn)自己的個(gè)性,傳播自己的思想。著名的網(wǎng)站包括Facebook等。很多人對(duì)發(fā)生在自己身邊的事以及對(duì)生活的一些感悟愿意用文字或圖片的方式記錄下來(lái)發(fā)到網(wǎng)絡(luò)上與他人分享交流,其中通過(guò)個(gè)人博客發(fā)布是一個(gè)使用頻率較高的方式。本課題擬建立一個(gè)交互簡(jiǎn)捷的博客系統(tǒng),方便在校學(xué)生發(fā)布信息進(jìn)行交流,可以將個(gè)人生活經(jīng)驗(yàn)或?qū)W習(xí)筆記心得等發(fā)布到系統(tǒng)中,方便其他同學(xué)的查看討論交流。1系統(tǒng)設(shè)計(jì)指導(dǎo)思想由于系統(tǒng)需要具有
3、普適的特性,因此建立以Web服務(wù)為中心的系統(tǒng)是最優(yōu)的架構(gòu)。使用傳統(tǒng)的B/S架構(gòu)能接納多種終端設(shè)備的訪(fǎng)問(wèn),如使用筆記本電腦、臺(tái)式計(jì)算機(jī)、手機(jī)、平板電腦等設(shè)備。結(jié)合實(shí)際的需要,技術(shù)實(shí)現(xiàn)上將以普通Web結(jié)合Wap的方式實(shí)現(xiàn)系統(tǒng)功能的訪(fǎng)問(wèn),并且這兩種技術(shù)架構(gòu)相近,可以統(tǒng)一到Web服務(wù)器中一起管理。2系統(tǒng)需求論述根據(jù)前面的分析與定位,本博客系統(tǒng)主要用于校內(nèi)同學(xué)的使用,因此需求的重點(diǎn)也反映在同學(xué)平時(shí)生活中的明顯的和一些潛在的期望。就主要功能來(lái)說(shuō),核心在于創(chuàng)建自己的博客空間,在博客空間中方便的發(fā)表博文,支持他人在線(xiàn)評(píng)論互動(dòng),同時(shí)能方便地查閱他人的博文并添加評(píng)論。同時(shí)由于潛在的需求期望增加獲取信息的渠道,系統(tǒng)
4、中增加創(chuàng)建興趣小組的功能,將小組的最新消息自動(dòng)發(fā)布到組員,并提供小組討論的頁(yè)面空間。另外系統(tǒng)提供站內(nèi)信功能,幫助簡(jiǎn)化互發(fā)消息的管理,這樣系統(tǒng)能自主控制所有消息,并能保留消息的歷史信息,方便消息維護(hù)。系統(tǒng)的功能性需求如下圖。查看博文創(chuàng)建小組小組交流評(píng)論主題瀏覽搜索-評(píng)論博文搜索小組vvextend空間信息維護(hù)模塊管理關(guān)鍵字管理分類(lèi)管理其中各功能性需求簡(jiǎn)要說(shuō)明如下:簡(jiǎn)單的系統(tǒng)登入登出及注冊(cè)功能在這里不再詳述。其他重要的功能主要集中在博客訪(fǎng)問(wèn)和博主訪(fǎng)問(wèn)這兩個(gè)角色上,其中博主角色具有博客角色具備的所有的系統(tǒng)功能。博客可以進(jìn)入系統(tǒng)瀏覽查看某博主的博文并回復(fù),或根據(jù)關(guān)鍵字搜索得到相關(guān)的博文信息,另外可以進(jìn)
5、入小組空間查看小組的最新信息,同樣可以利用搜索功能查詢(xún)小組中的相關(guān)信息。如果沒(méi)有找到相關(guān)主題的小組信息,則可以創(chuàng)建新的小組并接納成員訪(fǎng)問(wèn)。在小組中可以瀏覽發(fā)帖信息并回帖參與交流。博主角色能操作的功能主要集中于自己的博客空間方面,主要包括:發(fā)布博文管理,空間信息管理,回復(fù)管理,空間模塊管理,外觀(guān)方案管理,設(shè)置頭條或置頂管理,分類(lèi)管理,關(guān)鍵字管理,好友管理,常用鏈接管理,背景音樂(lè)管理。這幾個(gè)模塊的訪(fǎng)問(wèn)一般是博客主人身份才能操作。對(duì)于系統(tǒng)管理員角色的操作,主要側(cè)重于系統(tǒng)的運(yùn)營(yíng)與維護(hù)方面的功能。主要包括系統(tǒng)級(jí)別的用戶(hù)管理、系統(tǒng)級(jí)別的博客與小組信息維護(hù)、系統(tǒng)屬性設(shè)置、系統(tǒng)狀態(tài)檢查與監(jiān)測(cè)、系統(tǒng)數(shù)據(jù)的導(dǎo)出與
6、導(dǎo)入、系統(tǒng)的啟動(dòng)與關(guān)閉,具體如下面的用例圖所示。系統(tǒng)狀態(tài)檢查與監(jiān)測(cè)系統(tǒng)后臺(tái)數(shù)據(jù)維護(hù)3系統(tǒng)分析與設(shè)計(jì)基于系統(tǒng)的需求,這個(gè)章節(jié)主要陳述分析得出系統(tǒng)的分析模型和設(shè)計(jì)模型,從邏輯上理解系統(tǒng)的實(shí)現(xiàn)方式和操作方式。下面敘述中沒(méi)有嚴(yán)格按分析和設(shè)計(jì)劃分小節(jié),而是大體按照幾個(gè)主題進(jìn)行了陳述,將分析結(jié)果與設(shè)計(jì)結(jié)果大體連貫起來(lái),后續(xù)的章節(jié)將介紹具體的實(shí)現(xiàn)。3.1系統(tǒng)的總體分析本系統(tǒng)使用常見(jiàn)的三層架構(gòu),即界面表示層、業(yè)務(wù)邏輯層、數(shù)據(jù)持久層。其中表示層的職責(zé)主要集中于處理Web頁(yè)面的數(shù)據(jù)顯示、接收用戶(hù)輸入和各類(lèi)操作,屬于整個(gè)系統(tǒng)的最前端,但其中沒(méi)有系統(tǒng)的操作邏輯,僅僅包含簡(jiǎn)單的頁(yè)面交互方面的處理邏輯,一般使用JS腳本來(lái)
7、生成瀏覽器端的交互邏輯,并使用腳本將輸入數(shù)據(jù)或操作結(jié)果反饋到后臺(tái)業(yè)務(wù)邏輯層。3.2分析類(lèi)的獲取確定了主要的系統(tǒng)用例,接下來(lái)需要得出分析類(lèi)模型,用于評(píng)估整個(gè)系統(tǒng),也起到了承接分析與啟下設(shè)計(jì)的作用。歸納一下系統(tǒng)的功能,并綜合操作特性,得到如下幾個(gè)綜合的操作界面類(lèi)型(這里統(tǒng)一以UI為后綴,表示用戶(hù)界面):主頁(yè)面(MainUI):是系統(tǒng)的首頁(yè)面,主要呈現(xiàn)登錄模塊、搜索模塊、所有博客空間最新更新情況統(tǒng)計(jì)、所有小組更新情況統(tǒng)計(jì)、推薦的博客與小組的內(nèi)容展示、討論熱烈的話(huà)題匯總、博客和小組排行榜、廣告模塊等信息。個(gè)人主頁(yè)面(UserMainUI):用于用于個(gè)人有關(guān)的信息設(shè)置與管理,包括個(gè)人博客匯總信息(一個(gè)用
8、戶(hù)可以有多個(gè)博客空間)、創(chuàng)建小組管理、參與小組的最新情況、書(shū)簽管理(用于記錄一些常用鏈接)、個(gè)人信息管理模塊、搜索模塊、登錄模塊。博客頁(yè)面(BlogUI):即個(gè)人博客空間,包括個(gè)人信息模塊、搜索模塊、登錄模塊、標(biāo)題模塊、書(shū)簽?zāi)K、訪(fǎng)客模塊、發(fā)帖信息模塊、近況模塊、推薦小組模塊、推薦博客模塊、通告模塊、廣告模塊(系統(tǒng)內(nèi)用戶(hù)發(fā)布、非商業(yè)廣告)。博客管理主頁(yè)面(BlogMgmtUI):用于對(duì)當(dāng)前博客空間進(jìn)行設(shè)置,包括標(biāo)題設(shè)置、界面設(shè)置、模塊設(shè)置、訪(fǎng)問(wèn)性設(shè)置、發(fā)帖設(shè)置、回復(fù)設(shè)置、訪(fǎng)客信息管理模塊。小組主頁(yè)面(GroupUI):主要呈現(xiàn)某小組的信息,包括標(biāo)題、簡(jiǎn)介、空間發(fā)帖、成員、搜索模塊、登錄模塊、提
9、示欄個(gè)人信息顯示模塊、近況模塊、推薦小組模塊、推薦博客模塊、通告模塊、廣告模塊(系統(tǒng)內(nèi)用戶(hù)發(fā)布、非商業(yè)廣告)。小組管理主頁(yè)面(GroupMgmtUI):用于小組內(nèi)的信息管理。包括標(biāo)題設(shè)置、界面設(shè)置、成員及訪(fǎng)問(wèn)性設(shè)置、發(fā)帖設(shè)置、回復(fù)設(shè)置。搜索頁(yè)面(SearchUI):主要用于站內(nèi)的信息搜索,包括用戶(hù)、博客空間、小組、主題、關(guān)鍵字、一般包含信息的搜索及其結(jié)果。系統(tǒng)管理頁(yè)面(AdminUI):匯總了系統(tǒng)的管理功能,包括系統(tǒng)開(kāi)關(guān)機(jī)模塊、系統(tǒng)屬性設(shè)置模塊、系統(tǒng)數(shù)據(jù)管理模塊、系統(tǒng)用戶(hù)管理模塊、狀態(tài)顯示模塊、統(tǒng)計(jì)信息模塊。控制類(lèi)的作用集中體現(xiàn)了系統(tǒng)的業(yè)務(wù)邏輯,因此最終的控制類(lèi)大部分都映射到了業(yè)務(wù)邏輯層,根據(jù)
10、用例模型中的系統(tǒng)功能性描述,經(jīng)過(guò)統(tǒng)籌安排,得出系統(tǒng)中的控制類(lèi)如下:登錄控制類(lèi)(LoginWorkflow):專(zhuān)門(mén)負(fù)責(zé)登錄的控制邏輯。登出控制類(lèi)(LogoutWorkflow):針對(duì)登出系統(tǒng)專(zhuān)門(mén)進(jìn)行處理。雖然網(wǎng)頁(yè)型訪(fǎng)問(wèn)一般設(shè)有30分鐘會(huì)話(huà)有效期,但這里還是單獨(dú)進(jìn)行處理,保證數(shù)據(jù)的一致性。注冊(cè)控制類(lèi)(RegisterWorkflow):專(zhuān)門(mén)處理新用戶(hù)注冊(cè)的問(wèn)題。查找功能在各個(gè)對(duì)象上都有體現(xiàn),最終界面將分類(lèi)顯示,因此查找功能這樣組織:綜合查找控制類(lèi)(FindWorkflow):用于統(tǒng)一各類(lèi)查詢(xún)及匯總各查詢(xún)結(jié)果。小組查詢(xún)(FindGroupWorkflow):針對(duì)小組進(jìn)行篩選查詢(xún)的控制類(lèi)。用戶(hù)查詢(xún)(F
11、indUserWorkflow):用于對(duì)用戶(hù)進(jìn)行各類(lèi)信息進(jìn)行篩選查詢(xún)。博客空間查詢(xún)(FindBlogWorkflow):基于輸入值查詢(xún)滿(mǎn)足條件的博客空間。發(fā)帖查詢(xún)(FindItemWorkflow):針對(duì)發(fā)帖回帖進(jìn)行篩查,可以對(duì)博客空間和小組內(nèi)的發(fā)帖同時(shí)篩選。針對(duì)發(fā)帖管理的控制類(lèi)組織為發(fā)帖、顯示、回復(fù)三個(gè)控制類(lèi)。創(chuàng)建新帖控制類(lèi)(CreateItemWorkflow):博客空間和小組空間里面使用相同的控制邏輯,因此統(tǒng)一為CreateItemWorkflow控制類(lèi),不同的就是發(fā)往的空間不同而已。顯示發(fā)帖控制類(lèi)(ListItemWorkflow):針對(duì)顯示自定義的要求較多,因此單獨(dú)設(shè)計(jì)顯示控制邏輯,
12、在博客空間和小組空間中使用相同的控制類(lèi),最終顯示在界面類(lèi)中加工生成不同的頁(yè)面風(fēng)格?;靥刂祁?lèi)(ReplyItemWorkflow):用于管理回帖的過(guò)程控制,與創(chuàng)建新帖很相近,但地位不同。另外幾個(gè)控制類(lèi)集中于管理功能,包括:發(fā)帖條目的管理控制類(lèi)(ItemMgmtWorkflow):對(duì)空間中所有的發(fā)帖進(jìn)行管理的控制類(lèi),體現(xiàn)在對(duì)條目的增刪改查,對(duì)回復(fù)的管理,附加信息以及狀態(tài)的管理。博客管理控制類(lèi)(BlogMgmtWorkflow):對(duì)博客空間的信息進(jìn)行配置,對(duì)各模塊進(jìn)行配置與顯示,以及置頂發(fā)帖、管理鏈接關(guān)鍵字、背景音樂(lè)處理等。小組管理控制類(lèi)(GroupMgmtWorkflow):針對(duì)小組的各管理功能
13、,包括設(shè)置小組狀態(tài)、批復(fù)加入請(qǐng)求、任命管理者、發(fā)帖管理等。用戶(hù)管理控制類(lèi)(UserMgmtWorkflow):針對(duì)用戶(hù)自身進(jìn)行管理,包括更改信息,管理好友等操作。系統(tǒng)管理控制類(lèi)(SysMgmtWorkflow):所有針對(duì)系統(tǒng)的管理和操作都納入這個(gè)控制類(lèi)中,當(dāng)然設(shè)計(jì)階段可以對(duì)設(shè)計(jì)類(lèi)進(jìn)行調(diào)整,劃分出分角色的管理類(lèi)實(shí)現(xiàn)。3.3系統(tǒng)關(guān)鍵抽象概念的獲取與分析下面分析系統(tǒng)的領(lǐng)域模型。在這個(gè)系統(tǒng)中領(lǐng)域模型的重要作用是顯而易見(jiàn)的,所有用戶(hù)都圍繞著這個(gè)模型在工作。匿名用戶(hù)可以瀏覽系統(tǒng)中的各種信息,包括瀏覽博客空間和小組空間的信息;普通博客可以查看其它博客空間的信息,并能夠進(jìn)入小組進(jìn)行討論;而博主則可以在自己的博
14、客空間發(fā)布博文并進(jìn)入小組討論,所有人都在圍繞領(lǐng)域模型瀏覽信息或操作信息。因此根據(jù)前面的假設(shè)和擴(kuò)展,初步得出下面的領(lǐng)域模型結(jié)構(gòu)。4成員f分熒an+父分崟01博客空間樂(lè)主.元衛(wèi)屁訪(fǎng)R迪址小組怎小爼宕稱(chēng)樂(lè)小爼訪(fǎng)何迪址館小組跑主豐,豈當(dāng)旳狀態(tài)宅主題名稱(chēng)小組發(fā)帖弘較表時(shí)醫(yī)用戶(hù)腸評(píng)論時(shí)三分類(lèi)狀態(tài)1博文分類(lèi)回帖根據(jù)前述需求,一個(gè)用戶(hù)可以創(chuàng)建多個(gè)博客空間,并可以發(fā)布多條博文,每條博文具有一個(gè)特定的主題,并且可以具有多個(gè)分類(lèi)關(guān)系,可以包含多條回復(fù)的評(píng)論,并且具有一個(gè)特定的狀態(tài)。用戶(hù)可以創(chuàng)建一個(gè)小組,并且小組可以加入多個(gè)用戶(hù),小組中可以發(fā)帖、回帖。由于博客空間和小組內(nèi)的消息發(fā)布在操作和結(jié)構(gòu)的性質(zhì)上是一致的,不同之
15、處在于小組內(nèi)任何人都可以發(fā)帖,而博客空間內(nèi)只允許博主發(fā)帖,這在設(shè)計(jì)實(shí)現(xiàn)中只要檢查當(dāng)前是博客還是小組,操作者是否擁有當(dāng)前博客空間即可解決權(quán)限問(wèn)題,因此在系統(tǒng)設(shè)計(jì)中將兩者統(tǒng)一處理,將消息發(fā)布對(duì)象統(tǒng)稱(chēng)為發(fā)帖條目(PostItem),回復(fù)統(tǒng)一為回帖條目(Replyltem)。每個(gè)發(fā)帖條目關(guān)聯(lián)一個(gè)主題(Subject),并具有零到多個(gè)關(guān)鍵字(分類(lèi))(Keyword)。當(dāng)然發(fā)帖條目有不同的狀態(tài)(Status),如草稿、扣留發(fā)布、正常發(fā)布、置頂發(fā)布、隱藏、刪除、允許回復(fù)、禁止回復(fù)。另外博客博主僅僅在檢查操作時(shí)有區(qū)分權(quán)限的關(guān)系,因此將兩者統(tǒng)一為用戶(hù)(User)。用戶(hù)新建發(fā)帖后,鍵入的內(nèi)容自動(dòng)保存,此時(shí)發(fā)帖屬于
16、草稿狀態(tài);編輯完成點(diǎn)擊發(fā)布后,發(fā)帖進(jìn)入待發(fā)布狀態(tài);進(jìn)入待發(fā)布狀態(tài)的帖子由系統(tǒng)自動(dòng)判斷是否有違規(guī)定的地方,進(jìn)入審批狀態(tài),結(jié)果若通過(guò)則進(jìn)入發(fā)布狀態(tài),若未通過(guò)則進(jìn)入待發(fā)布狀態(tài),此時(shí)用戶(hù)可以繼續(xù)編輯或丟棄帖子,因此在待發(fā)布狀態(tài)下的帖子都是沒(méi)有審核通過(guò)的帖子;處于發(fā)布狀態(tài)的帖子是可以顯示在空間里面的,當(dāng)然如果用戶(hù)選擇隱藏則不顯示在空間內(nèi);超過(guò)時(shí)限的帖子則進(jìn)入存檔狀態(tài),存檔狀態(tài)下的帖子都將被移到到備份庫(kù)中壓縮存儲(chǔ)。3.4分析類(lèi)交互下面選取一個(gè)簡(jiǎn)單的登錄過(guò)程和發(fā)布帖子這兩個(gè)用例來(lái)說(shuō)明分析類(lèi)的交互過(guò)程分析。登錄過(guò)程在所有系統(tǒng)中都有體現(xiàn)。一般在操作的設(shè)計(jì)中,首次登錄的時(shí)候只需要輸入用戶(hù)標(biāo)識(shí)和密碼即可登錄,當(dāng)用戶(hù)
17、名或密碼不正確時(shí),在后續(xù)的界面上加入驗(yàn)證碼來(lái)防止破解攻擊,多次無(wú)效后(一般控制在10次)賬戶(hù)便被鎖定。本系統(tǒng)中由于沒(méi)有太大的安全性需求,因此即使多次登錄失敗賬戶(hù)也不需要鎖定,只需加入驗(yàn)證碼即可。下面分析發(fā)布帖子的交互過(guò)程。界面中使用CKEditor控件可以完成文字修飾、上傳圖片及編排版式的功能,最終在瀏覽器上生成一個(gè)HTML的描述文本,提交后服務(wù)器端接收這個(gè)HTML描述文本,設(shè)計(jì)中將這個(gè)描述文本直接存入數(shù)據(jù)庫(kù)中即可。瀏覽帖子的時(shí)候只要取出此描述文本放入頁(yè)面中即可顯示原先編輯好的效果。提交此數(shù)據(jù)后,首先確認(rèn)并檢查用戶(hù)權(quán)限,是否可以發(fā)帖,通過(guò)后將發(fā)帖內(nèi)容交給系統(tǒng)檢查,這里由ItemChecker接
18、口來(lái)完成檢查工作,最終設(shè)計(jì)中只要實(shí)現(xiàn)這個(gè)接口就可以完成多種檢查方法。檢查通過(guò)后,發(fā)帖內(nèi)容存入數(shù)據(jù)庫(kù),同時(shí)用戶(hù)可以瀏覽最終的效果。4系統(tǒng)設(shè)計(jì)整個(gè)系統(tǒng)使用Java語(yǔ)言作為開(kāi)發(fā)的基礎(chǔ)語(yǔ)言,Web界面部分搭配使用HTML、CSS、J送JS以及JSP技術(shù)來(lái)實(shí)現(xiàn)。最終發(fā)布的系統(tǒng)對(duì)平臺(tái)沒(méi)有特別大的強(qiáng)制要求,因?yàn)榛贘ava開(kāi)發(fā)的Web型服務(wù)項(xiàng)目,可以選用流行的Tomcat服務(wù)器搭建,這些都是開(kāi)源免費(fèi)的平臺(tái)。數(shù)據(jù)庫(kù)可以使用MySQL數(shù)據(jù)庫(kù),它也是免費(fèi)使用的數(shù)據(jù)庫(kù),很多大型網(wǎng)站都選用了MySQL作為自己的數(shù)據(jù)庫(kù)支持平臺(tái)。開(kāi)發(fā)過(guò)程中,選擇平臺(tái)搭建于Windows系統(tǒng)下,當(dāng)然發(fā)布時(shí)可以選擇Windows平臺(tái)或Lin
19、ux平臺(tái),兩者的環(huán)境下都有上述的開(kāi)源軟件。硬件平臺(tái)沒(méi)有強(qiáng)制性要求。4.1系統(tǒng)數(shù)據(jù)庫(kù)的結(jié)構(gòu)設(shè)計(jì)根據(jù)前面的需求描述及領(lǐng)域模型的系統(tǒng)關(guān)鍵數(shù)據(jù)抽象,分析得出系統(tǒng)的數(shù)據(jù)庫(kù)表結(jié)構(gòu)如下面的關(guān)系圖所示,其中基本表(Table)用于記錄底層的核心的信息。另外,必須基于基本表在其上層創(chuàng)建一些視圖(View)以方便某些角度的數(shù)據(jù)的操作。整體的邏輯結(jié)構(gòu)如圖所示:數(shù)據(jù)庫(kù)表的總體關(guān)系圖5系統(tǒng)實(shí)現(xiàn)系統(tǒng)實(shí)現(xiàn)中,主要是根據(jù)設(shè)計(jì)模式實(shí)現(xiàn)其中定義的方法和功能即可。在軟件項(xiàng)目中實(shí)現(xiàn)的工作量比設(shè)計(jì)要輕很多,這里選取之前的介紹的登錄實(shí)現(xiàn)與發(fā)帖相關(guān)部分的實(shí)現(xiàn)來(lái)介紹具體實(shí)現(xiàn)過(guò)程。5.1登錄的實(shí)現(xiàn)登錄頁(yè)面的實(shí)現(xiàn)首先是判斷登錄名和密碼是否為空,
20、如果都不為空,提交給UserServlet處理,并且連接數(shù)據(jù)庫(kù)并判斷post傳過(guò)來(lái)的數(shù)值內(nèi)容是否與數(shù)據(jù)庫(kù)中的內(nèi)容一致,如果一致就允許用戶(hù)登錄相應(yīng)界面。頁(yè)面組件HTML代碼組織如下:div用戶(hù)登錄/pStringmessage=(String)request.getAttribute(message);If(message!=null)out.print(fontcolor二red+message+/trtrtd密碼/tdtdinputname=passwordtype=passwordid=password/td/trtr0)user=(User)list.get(0);HttpSession
21、session=request.getSession();session.setAttribute(user,user);request.getRequestDispatcher(/main.jsp).forward(request,response);elserequest.setAttribute(message,用戶(hù)名或密碼不正確);request.getRequestDispatcher(/login.jsp).forward(request,response);/退出publicvoidlogout(HttpServletRequestrequest,HttpServletRespo
22、nseresponse)throwsServletException,IOExceptionHttpSessionsession=request.getSession();session.invalidate();response.sendRedirect(/main.jsp);/修改密碼publicvoidchangePassword(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOExceptionStringoldPassword=request.getParameter(old
23、Password);StringnewPassword=request.getParameter(newPassword);StringreNewPassword=request.getParameter(reNewPassword);HttpSessionsession=request.getSession();Useruser=(User)session.getAttribute(user);if(!user.getPassword().equals(oldPassword)request.setAttribute(message,您輸入的原密碼錯(cuò)誤);request.getRequest
24、Dispatcher(/result.jsp).forward(request,response);elseif(newPassword.equals(reNewPassword)Stringsql=updatet_usersetpassword=?whereid=?;Stringparams=newPassword,user.getId().toString();QueryRunnerqr=DbHelper.getQueryRunner();tryqr.update(sql,params);catch(SQLExceptione)e.printStackTrace();response.se
25、ndRedirect(/main.jsp);elserequest.setAttribute(message,兩次輸入密碼不一致);request.getRequestDispatcher(/reult.jsp).forward(request,response);5.2發(fā)帖的實(shí)現(xiàn)帖子的基本信息設(shè)置項(xiàng)分為幾部分內(nèi)容,核心包括如下部分。privateintid;privateStringtitle;privateStringcontent;privateDatecreateDate;privateStringcategoryName;privateIntegercategoryId;發(fā)帖前的驗(yàn)證
26、工作由下面代碼實(shí)現(xiàn)。publicclassPreAddBlogServletextendsHttpServletprivatestaticfinallongserialVersionUID=-4836172756151206293L;publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOExceptionlist(request,response);publicvoidlist(HttpServletRequestrequest,HttpServletResp
27、onseresponse)throwsServletException,IOExceptionHttpSessionsession=request.getSession();if(session=null)response.sendRedirect(/login.jsp);elseStringsql=selectid,content,rankfromt_keywordorderbyrankdesc,iddesc;QueryRunnerqr=DbHelper.getQueryRunner();Listlist=null;trylist=(List)qr.query(sql,newBeanList
28、Handler(Category.class);catch(SQLExceptione)e.printStackTrace();request.setAttribute(list,list);request.getRequestDispatcher(/addItem.jsp).forward(request,response);具體發(fā)帖操作由如下代碼實(shí)現(xiàn)。publicclassAddBlogServletextendsHttpServletprivatestaticfinallongserialVersionUID=1L;protectedvoiddoGet(HttpServletReques
29、trequest,HttpServletResponseresponse)throwsServletException,IOExceptiondoPost(request,response);protectedvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOExceptionrequest.setCharacterEncoding(utf-8);HttpSessionsession=request.getSession();if(session=null)resp
30、onse.sendRedirect(/login.jsp);elseStringtitle=request.getParameter(title);Stringcontent=request.getParameter(content);Log.println(title);Log.println(content);intresult=0;Stringsql=insertintot_postitem(title,content)values+(?,?);Stringparams=title,content;QueryRunnerqr=DbHelper.getQueryRunner();tryre
31、sult=qr.update(sql,params);/query()catch(SQLExceptione)e.printStackTrace();Stringmessage=;if(result=0)message二添加帖子失??;elsemessage二添加帖子成功;request.setAttribute(message,message);request.getRequestDispatcher(/result.jsp).forward(request,response);5.3查看帖子模塊查看發(fā)帖包括查看所有發(fā)帖和按發(fā)帖編號(hào)查看一篇帖子,相關(guān)操作提交給HomeServlet執(zhí)行。pub
32、licclassHomeServletextendsHttpServletprivatestaticfinallongserialVersionUID=-481044148316500873L;publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOExceptionrequest.setCharacterEncoding(utf-8);Stringmethod=request.getParameter(method);if(method=null)main(r
33、equest,response);request.getRequestDispatcher(/main.jsp).forward(request,response);elseif(method.equals(get)main(request,response);get(request,response);request.getRequestDispatcher(/displayItems.jsp).forward(request,response);/根據(jù)id讀取一篇帖子publicvoidget(HttpServletRequestrequest,HttpServletResponseres
34、ponse)throwsServletException,IOExceptionStringid=request.getParameter(id);QueryRunnerqr=DbHelper.getQueryRunner();Stringsql=selectid,title,content,createdatefromt_postitemwheried=+id;/根據(jù)id讀取一篇帖子PostItemitem=null;tryListlist=(List)qr.query(sql,newBeanListHandler(PostItem.class);item=(PostItem)list.ge
35、t(0);catch(SQLExceptione)e.printStackTrace();/根據(jù)id讀取帖子所有評(píng)論sql=selectid,username,content,createdtimefromt_replyitem+whereitem_id=+id+orderbyiddesc;ListcommentList=null;trycommentList=(List)qr.query(sql,newBeanListHandler(Comment.class);catch(SQLExceptione)e.printStackTrace();request.setAttribute(post
36、item,item);request.setAttribute(commentList,commentList);/讀取所有帖子publicvoidmain(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOExceptionStringcid=request.getParameter(cid);Stringsql=null;if(cid=null)sql=selectb.idasid,title,content,createdate,+nameascategoryname,c.idascategoryid+fromt_blogb,t_keywordcwhereb.id=c.id+orderbyb.iddesclimit0,4;elsesql=selectb.idasid,title,content,createdate,+nameascategoryname,c.idascategoryid+fromt_blogb,t_keywordcwhereb.id=+cid+orderbyb.iddesclimit0,4;/DButils中核心類(lèi),生成對(duì)象時(shí)傳遞數(shù)據(jù)源對(duì)象QueryRunnerqr=DbHelper.getQu
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 液壓課程設(shè)計(jì)淬火爐
- 家庭飲品課程設(shè)計(jì)理念
- 系統(tǒng)健身訓(xùn)練課程設(shè)計(jì)
- 航線(xiàn)配船方法課程設(shè)計(jì)
- 水利工程師水利工程設(shè)計(jì)與運(yùn)維
- 營(yíng)養(yǎng)科護(hù)士助健康飲食
- 科學(xué)實(shí)驗(yàn)小班班級(jí)工作計(jì)劃
- 采礦工程行業(yè)工程師的工作總結(jié)
- 家庭用品行業(yè)采購(gòu)工作總結(jié)
- 餐飲服務(wù)行業(yè)技術(shù)工作總結(jié)
- 【8地RJ期末】安徽省蕪湖市無(wú)為市2023-2024學(xué)年八年級(jí)上學(xué)期期末地理試題(含解析)
- 2023學(xué)年杭州市十四中高二數(shù)學(xué)(上)期末考試卷附答案解析
- 中國(guó)AI+Agent應(yīng)用研究報(bào)告
- 五級(jí)(程控交換)職業(yè)技能鑒定理論考試題及答案
- 醫(yī)療救護(hù)合作協(xié)議
- 《微元法的應(yīng)用》課件
- 文職-管理學(xué)基礎(chǔ)知識(shí)點(diǎn)
- 標(biāo)準(zhǔn)門(mén)面租房合同范本
- 《無(wú)人機(jī)飛行操控技術(shù)(微課版)》全套教學(xué)課件
- 2023-2024學(xué)年廣東省深圳高級(jí)中學(xué)七年級(jí)(上)期末歷史試卷
- 2024年房屋租賃補(bǔ)充協(xié)議參考模板(四篇)
評(píng)論
0/150
提交評(píng)論