基於JSP的學術交流論壇系統的設計與實現

版權聲明:本文爲[博主](https://zhangkn.github.io)原創文章。未經博主贊成不得轉載。

https://creativecommons.org/licenses/by-nc-sa/2.5/cn/ https://blog.csdn.net/u011018979/article/details/30467047 css

# [新的博客](https://zhangkn.github.io/)


[我的技術站](https://zhangkn.github.io/)https://zhangkn.github.io/


目 錄

   

摘要 Ihtml

關鍵詞 I前端

Abstract Ijava

Key words Igit

1前言 1github

1.1課題研究的目的及意義 1web

1.2國內外研究現狀 1sql

1.3本文的工做 2數據庫

2系統分析 3編程

2.1可行性分析3

2.2需求分析3

2.2.1需求分析概述3

2.2.2任務概述3

2.2.3會員用戶4

2.2.4版主4

2.2.5管理員4

2.3開發工具以及相關技術簡單介紹5

2.3.1相關工具簡單介紹5

2.3.2相關技術概述5

2.4系統的數據流圖7

2.5用例圖8

3整體設計9

3.1系統架構設計9

3.1.1功能分析9

3.1.2前臺架構設計 9

3.1.3後臺架構設計10

3.2數據庫設計10

3.2.1數據字典概述10

3.2.2表結構11

4具體設計 14

4.1系統前臺視圖層具體設計14

4.2系統後臺視圖層具體設計15

5系統實現16

5.1執行環境16

5.2系統架構概述16

5.3數據庫鏈接模塊實現17

5.4前臺核心模塊實現19

5.4.1用戶模塊的實現19

5.4.2版塊模塊的實現21

5.4.3主題模塊的實現22

5.5後臺核心模塊實現27

5.5.1後臺主版塊模塊的實現 27

5.5.2帖子信息管理模塊的實現29

5.5.3系統用戶管理模塊的實現30

5.5.4會員用戶管理模塊的實現31

6總結與展望35

參考文獻 36

致謝 37


基於JSP的學術交流論壇系統的設計與實現

 

摘要

學術交流論壇系統是依照MVC模式進行設計實現的,採用Tomcat做爲後臺server,以MySQL數據庫做爲數據server,使用SERVLET進行邏輯控制,表現層用JSP頁面顯示,用於在網絡上爲網民提供一個學術交流的場所.實現了查看、發表、刪除帖子功能,論壇帖子版塊控制。注冊用戶可以改動本身的我的信息、好友與黑名單以及用戶之間發送消息,管理員可以對用戶、帖子,版塊、版塊權限進行管理.論文從問題的提出、基本設計思想、數據的流向到具體的設計過程都作出了具體論述.

 

關鍵詞

論壇;主題;回帖

 

 The Design and Implementation of Academic Exchange BBS System Based on JSP

 

Abstract

The BBS system in academic exchange is based on mode of MVC ,using Tomcat as the web server. The data is stored in the MYSQL database. The SERVLET realizes the logical control and the performance level demonstrated with the JSP page. The system is used to provide a place where people can exchange academic online. The system provides the function to look over, deliver and delete the information and the user registered can change their own information, add good friends and blacklist. The users also can transmit information between each other. The manager may to the user, the card, the sector and the sector jurisdiction carries on the management. The paper from the question proposed that the basic design thought that data has made the detailed elaboration flow direction to the concrete design process. 

 

Key words

 

 Forum; Topic; Comment


前言

1.1 課題研究的目的及意義

本文經過對學術交流論壇系統的設計到實現流程的具體描寫敘述,目的是設計學術交流論壇系統的結構和提出學術交流論壇系統從設計到實現中各個部分的解決方式,同一時候使本身在實現中學習不少其它新知識,更深刻掌握JSPJava語言,瞭解軟件開發全過程,爲之後的學習與工做打下堅實基礎.

在學術交流論壇中,網友可以自由的提出問題也可以及時地幫助他人解決這個問題.網友之間的學術交流打破了空間、時間的限制.在與別人進行交流時,無須考慮自身的年齡、學歷、知識、社會地位、財富、外貌、健康情況。即便交流兩方素不相識,也可以親近地交談思想.交流兩方可以處於一個平等的位置與其它人進行不論什麼問題的探討,這對於現有的所有其它交流方式來講是不可能的. 

學術交流論壇在網上提供學術交流的場所.它用於討論和在線聊天,利用網絡實時、便捷的特色來方便人們的學術交流.經過學術交流論壇咱們可以更好的傳播咱們的文化知識。更大程度地提升咱們的能力,拓展咱們的知識面.

1.2 國內外研究現狀

進入二十一世紀,計算機技術迅速向着網絡化和集成化方向發展.傳統的單機版應用軟件正逐漸退出舞臺,取而代之的是支持網絡和支持多種數據信息(多媒體)的新一代網絡版應用軟件。而眼下網絡版軟件中彷佛存在着兩種不一樣的趨勢。一種是稱爲client——server的C/S結構應用系統。這類軟件具備結構嚴謹,執行效率高,server端壓力小,安全性好的長處。被普遍運用於局域網中.而還有一種,也是本文所採用的。稱爲瀏覽器——server的B/S結構應用系統,它的特色是在client採用了瀏覽器做爲界面,其長處在於軟件開發效率高,client不受操做平臺限制、也不受地域限制,網絡傳輸量少,即適用於局域網,更適用於Internet。而且投資小、見效快,用戶可以沒必要進行server方面投資,而是去租用,甚至是無償使用ISP的server資源,於是受到中小型單位的青睞.

Internet起源於20世紀60年代末、70年代初,當時,美國國防部爲了將軍事基地內各類廠商的電腦主機互連,讓它們進行數據交換以便研究工做順利進行。因而成立了ARPA網絡計劃.ARPA計劃嘗試建設一個網絡系統,它可將各類不一樣廠商的電腦鏈接起來.隨着這個計劃的成功,各學術單位,研究機構紛紛與ARPA計劃所創建ARPANET鏈接.到了20世紀80年代,Internet這個名詞因勢產生,它表明着這十年來所構建的涵蓋全球各地的網絡系統[1].1990年起,商業使用Internet在美國急速地擴大,而Internet也從原來屬於少數人使用的網絡系統轉變爲普通百姓也可以使用的網絡系統.

最初的Internet資源服務停留在文本模式。1989年。量子物理實驗室(CERN)的一個研究小組着手開發一種全新的Internet服務。它可以在網絡上傳送圖片、文本、影像、聲音等多媒體數據.因而Tim Burners Lee領導的小組開發出一種主從的分佈式的網絡服務系統。這就是WWW(World Wide Web),俗稱萬維網[1].

所謂WWW事實上就是連上Webserver訪問資源,取得的內容就是所謂的主頁(Homepage)[18].進入的網頁一般不會僅僅有一頁,而是整個站點的內容. 隨着網絡普及。論壇深受廣大網民的喜好。同一時候在線技術支持也在論壇中開展起來.

參照王海明和韓瑞霞的國內BBS研究現狀述評,將國內BBS研究現狀可以劃分爲下面四個階段:第一階段,有關BBS自身的初步研究.包含歷史和哲學問題、技術問題和應用、功用和服務以及政策法律等問題[2].第二階段,BBS的使用和用戶.包含用戶的認知、感覺和調查。使用主體以及怎樣使用,BBS提供了什麼,它的教育和政治等其它用途[2].第三階段,BBS的影響.包含它對人際關係和人們生活的改變。因之產生的一些新的社會和文化問題及其對傳統媒介的衝擊[2].第四階段,BBS的改進和研究.包含怎樣發展利用BBS及對BBS產生的相關問題的專業深刻研究和系統化、綜合性分析[2].

1.3 本文的工做

學術交流論壇系統就是提供給注冊用戶的學術交流平臺。會員用戶可以經過Internet訪問學術交流論壇,在這個平臺上發表主題、閱讀主題、回覆主題.

系統有四種類型的操做用戶:遊客、會員用戶、版主、管理員.每類用戶有其不一樣的操做集,系統提供的登陸頁面能本身主動識別不一樣級別的用戶。並提供不一樣的操做界面.與之相應。系統具備下面功能:用戶註冊、用戶登陸、用戶註銷、發表主題、瀏覽主題、回覆主題、分頁查找主題、做者查找、我的資料維護、版塊管理、版主管理、會員用戶管理和帖子管理。所有操做在client瀏覽器完畢。而server端程序會按用戶的請求來完畢對系統數據的操做。並將結果傳給Webserver,再由Webserver處理成HTML文件後發送到client瀏覽器.這就是所謂的B/S結構應用系統。B/S結構即Browser/Server(瀏覽器/server)結構。是隨着Internet技術的興起,對C/S結構的一種變化或者改進的結構.

C/S結構,即Client/Server(客戶機/server)結構,經過將任務合理分配到Client端和Server端,減小系統的通信開銷,可以充分利用兩端硬件環境的優點.

B/S結構下。用戶界面經過瀏覽器實現,一部分事務邏輯在前端實現。主要事務邏輯在server端實現,造成所謂N-Tier結構.B/S結構[18]。利用了成熟的瀏覽器技術。結合瀏覽器的Script語言(JavaScript),實現了原來需要複雜專用軟件才幹實現的強大功能。是一種全新的軟件系統構造技術.

學術交流論壇系統實際需要,系統採用B/S結構.本論文設計學術交流論壇系統,系統具有較大伸縮性,適應Web平臺.另外,本系統具有較大擴展性,而Java 語言是面向對象的,面向對象編程注重程序的可擴展性,且字節碼是跨平臺執行的,因此本系統採用Java 語言+ JSP開發技術.

2 系統分析

2.1 可行性分析

1.技術可行性分析

本系統採用三層結構。用MYSQL數據庫做爲後臺數據庫,安裝使用簡單;前臺頁面採用JSP動態頁面;控制層採用SERVLETSERVLETJava Web開發中使用的比較熱門的技術.server採用Tomcatserver。它是一個開源軟件.開發者在學習了J2EE基礎技術後,有能力開發.

2.經濟可行性分析

經濟可行性是指軟件所帶來的經濟效益與開發設計所需要的投資費用相比較是否適當,軟件是否會給使用者帶來經濟效益.隨着計算機軟件和硬件技術的飛速發展,計算機軟、硬件價格降低,設計本系統所投入資金與學術論壇爲網民公佈、獲取信息所節省的價值相比之下,經濟效益可觀。因此在經濟上是可行的.

3.社會可行性分析

當前社會是網絡化社會,人們經過網絡上獲取和公佈信息交流,系統正是應這一需求而產生的,系統是網民公佈主題,獲取有價值學術信息的場所.因此本系統具備社會可行性.

2.2 需求分析

2.2.1 需求分析概述

需求分析處於軟件開發過程開始階段。它對軟件開發過程和軟件產品質量相當重要.需求是指用戶對目標軟件系統在功能、行爲和性能設計約束方面的要求.在需求分析工做中,系統分析人員對用戶的需求進行調查和分析。肯定現有環境特徵,定義目標軟件特徵 .需求分析工做是相應用環境及其問題進行理解和分析,對問題涉及的信息、功能及系統行爲創建模型,使用戶需求精確化.

2.2.2 任務概述

1.目標

信息時代需要高速傳播學術信息。局部範圍的學術信息交流會減緩信息技術前進的步伐.學術交流論壇目的在於爲人們提供一個共同交流、學習、傾吐心得的學術交流平臺,實現來自不一樣地方的用戶極強的學術信息互動性,用戶在得到本身所需要的學術信息的同一時候也可以廣交朋友,拓寬本身的學術視野和社交面.

2.系統描寫敘述

系統有版塊,主題和回覆.版塊是對主題的分類,回覆是在主題下發表的,是登錄用戶對主題的評論.當用戶進入首頁時會顯示論壇的所有版塊及每個版塊下的子版塊、主題數、帖子總數和最後發表主題的用戶.進入子版塊以後顯示子版塊下的主題及該主題下的回覆數、PV數和最後發表評論的用戶.點擊主題進入主題具體頁面,顯示主題內容,發表該主題的用戶的username、積分、註冊時間,該主題下的回覆和發表回覆的用戶信息.

3.用戶的特色

學術交流論壇的會員用戶懂上網就可以進行學術交流.

① 版主和管理員.版主產生於會員用戶,版主僅僅需作一些簡單的操做.系統的管理員的要求懂主要的數據庫和網絡技術使用系統的後臺管理.

② 系統的維護人員具有較強的計算機專業水平,對系統的故障進行維護.

4.學術交流論壇系統的功能:

① 用戶中心:用戶註冊、用戶登陸、用戶註銷、發表帖子、回覆帖子、按條件搜索帖子、查看本身發表的帖子及查看精華帖子.

② 版主中心:發表帖子、編輯帖子、回覆帖子、搜索帖子、刪除帖子、帖子加精和帖子置頂.

③ 管理員中心:帖子刪除、帖子置頂、設精華帖、按條件搜索帖子。對會員用戶的刪除、受權,對版塊的權限管理,對版塊的管理.

2.2.3 會員用戶

1.當會員用戶進入站點首頁時。會員用戶可以登陸.沒有登陸的用戶僅僅能查看主題。不能發表主題或評論.登陸以後,用戶就可以發表主題或回覆;查看或改動本身我的信息.

2.沒有註冊的用戶可以在登陸窗體中點擊註冊超連接進入新用戶註冊頁面,輸入username、password、password提示問題、提示問題答案及安全郵箱,註冊成爲站點的會員用戶.password提示問題是爲找password設置的,當用戶忘記password後可以經過輸入提示問題答案來找回password,假設用戶回答正確,系統會本身主動發送一封郵件到用戶的安全郵箱裏,提示用戶改動password.

2.2.4 版主

版主做爲權限最少的管理者僅僅能對本身所管理的版面的主題進行刪除、置頂。設置精華貼,屏蔽用戶的回覆,編輯版面說明.

2.2.5 管理員

管理員可以改動用戶權限、管理會員用戶、管理系統用戶、管理版塊和管理帖子.

 

2.3 開發工具以及相關技術簡單介紹

2.3.1 相關工具簡單介紹

系統採用的工具備JDK TomcatMYECLIPSE MYSQL.

1. JDK

JDKSun 公司Java應用程序和組件的開發環境,是編譯和測試工具,提供java程序的Java虛擬機平臺。是調試和執行JSP所必不可少的工具[3].

2.Tomcat 

Tomcat是開源的SERVLETJSP容器,它是Jakarta項目的重要組成,由ApacheSun和其它公司及我的開發[3].Tomcat內部實現了SERVLETJSP引擎,而且擴展了一些應用server功能,好比JNDI、數據庫鏈接池和用戶事務處理.眼下Tomcat被普遍地應用於中小規模的Java web應用中.

3.MYECLIPSE 

Eclipse 是基於Java 的開放源代碼的可擴展開發平臺,Eclipse平臺提供軟件開發工具的集成服務,所有開發工具(包含JDEPDE)都是用插件的形式提供的.這樣的設計使得Eclipse具備開放式可擴充的結構[4].

MYECLIPSE是在Eclipse集成開發環境中提供Web應用程序開發的插件.Eclipse軟件是免費的。但MYECLIPSE不是一個全然免費的產品,需要購買.

4.MYSQL 

MYSQL是開放源代碼SQL數據庫管理系統,它由MYSQL AB公司開發、公佈並支持.同一時候MYSQL數據庫server具備高速、可靠和易於使用的特色[5].

2.3.2 相關技術概述

採用的技術有JavaSERVLETJSPJavaScriptXMLMVC.

1.Java語言概述

Java編程語言是一種併發、基於類和麪向對象的語言.Java編程語言與CC++相關,但是在組織方式上有區別,Java具備CC++遺漏的不少長處.它旨在成爲一種生產語言,而不是一種研究語言,而且正是如此[6].

2.SERVLET概述

SERVLET是爲了使用Web上的HTTP協議而設計的.SERVLET是在Webserver上執行的程序, SERVLET可以處理客戶請求並生成動態Web網頁[3].

3.JSP概述

JSP (Java Server Pages)是由Sun 公司倡導,不少公司參與,共同創建的一種動態網頁技術標準。JSP技術是在SERVLET技術基礎上發展起來的[3].

4.JavaScript概述

JavaScript是基於對象(Object)和事件驅動(Event Driver)的腳本語言[3].

JavaScript是一種簡潔的面向對象的描寫敘述語言,是專門用來開發Internetclient和server端的應用程序。它可以被輕易的嵌入到HTML文件.使用JavaScript的瀏覽器可以迴應使用者的需求事件而不用經過網絡來回傳數據。這樣。使用者的數據可以直接被client應用程序處理。它的出現彌補了HTML語言的缺陷,它是JavaHTML折衷的選擇

5.XML概述

19982W3C正式推出XMLextensible Markup Language)後,XML迅速地在廣大的設計人員中傳播.隨着Internet發展,HTML對網絡設計要求顯露出疲態.XML在這樣的大環境下孕育而生.它是一種贊成用戶對本身的標記語言進行定義的源語言[3].

6.MVC模式概述

M是指數據模型,V是指用戶界面,C則是控制器.使用MVC的目的是將MV的實現代碼分離,從而使同一個程序可以使用不一樣的表現形式[3].

模型-視圖-控制器(Model-View-Controll)是Xerox PARC在八十年代爲編程語言Smalltalk80發明的一種設計模式.它被推薦爲J2EE平臺的設計模式

MVC架構模式關係圖例如如下圖2.1

 

 

 

 

 

 

 

 

 

 

 

 

 

View視圖負責提供可交互的用戶界面和向用戶顯示模型數據.Model模型負責封裝應用程序的內部狀態和管理應用程序的業務邏.Controller控制器負責與用戶進行交互.接受用戶請求、調用模型處理和選擇響應的視圖.

2.4 系統的數據流圖

數據流圖即DFD(Data Flow Diagram)是分析系統數據流程的圖形,讓用戶理解系統的功能、輸入、輸出和數據存儲.系統的第一層數據流圖如圖2.2.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

用戶註冊。校驗用戶信息的有效性。校驗經過的將信息存入數據庫,提示通知用戶.

用戶登陸時提供username和password。假設password和username校驗不一致的時候。在頁面提示password或用戶不存在.登陸成功則通知用戶.

註銷登陸時要清除server端用於保存用戶信息的session。並跳轉到登錄頁面.

發表帖子時先校驗爲非遊客用戶才幹在帖子採集頁輸入內容來更新系統數據.

搜索帖子依據發表時間、精華帖和做者來查看主帖的點擊率、做者和主題名.

首頁顯示版塊信息。點擊子版塊進入顯示主題列表頁面,點擊主題顯示出回帖所屬的主題信息、回帖的做者信息和回帖內容.在回帖信息採集區域書寫信息進行公佈回帖.

管理會員用戶。對會員用戶進行改動、刪除、加入用戶和對用戶鎖操做的功能;管理帖子信息包含主題貼信息管理和用戶回貼信息管理.主帖管理頁面中有刪除主帖和編輯主帖功能.用戶回貼信息管理有刪除回貼和編輯回貼功能;管理版塊信息有刪除版塊、加入主版塊和編輯版塊順序;管理系統用戶有改動用戶信息、刪除用戶和加入用戶功能.

2.5 用例圖

用例是系統和外部的參與者(actor)交互的動做序列的說明,是對一組動做序列的抽象描寫敘述,系統執行這些動做序列,產生相應的結果反饋給參與者或做爲其它用例的參數.UML.用例用一個橢圓表示。用例名用動賓結構或主謂結構命名.參與者是指用戶在系統中的扮演的角色,其圖形化表示是一個小人.用例圖如圖2.3所看到的.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

系統用例實用戶註冊、登陸、註銷、瀏覽主題、發表主題、發表回覆、搜索帖子、改動帖子、刪除帖子和查看精華帖;管理員管理主題、板塊、會員用戶和系統用戶.

3 整體設計

3.1 系統架構設計

3.1.1 功能分析

系統分前臺和後臺模塊,功能模塊圖.

 

 

 

 

 

 

 

 

 

 

 

 

 

系統的功能模塊有遊客註冊登陸、會員發帖回帖、瀏覽帖子、版塊管理、帖子管理和會員管理.

3.1.2 前臺架構設計

前臺模塊面向版主、用戶和遊客,提供註冊賬號、用戶登陸、用戶註銷、瀏覽文章、發表新主題、回覆主題、改動帖子、刪除帖子、搜索帖子、查看和改動我的信息功能.如圖3.2.

 

 

 

 

 

 

 

 

 

3.1.3 後臺架構設計

後臺模塊的使用對象是管理員,後臺功能包含管理用戶、管理版塊、管理主題和版塊權限管理.後臺功能模塊如圖3.3.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

後臺的具體功能有添加版塊、查詢版塊、刪除版塊、改動用戶、刪除用戶、刪除主題、改動主題、置頂帖子、加精帖子、添加版主和刪除版主.

3.2 數據庫設計

3.2.1 數據字典概述

系統抽象出來的數據結構有:用戶信息表(users)、主板塊信息表(board)、子版塊信息表(subboard)、主題帖信息表(topic)、回帖信息表(reply)、管理員信息表(admin)和版主信息表(editionmaster).依據需求分析,設計例如如下表:

1.用戶信息表:用戶編號、用戶姓名、用戶真實姓名、用戶password、用戶性別、用戶Email、生日、OICQ、積分、狀態、用戶類型(普通用戶,版主)、地址.

2.主題帖信息表:板塊編碼、板塊名稱、版塊順序.

3.子版塊信息表:子版塊編號、子版塊名稱、子版塊描寫敘述、子版塊主題帖數、子版塊回帖數、子版塊每頁顯示主題數、主題下的每頁回帖顯示數、新主題分、回帖分、順序、建板時間.

4.主題帖信息表:主題帖編號、主題帖標題、主題帖內容、置頂標誌、加精標誌、點擊率、公佈時間.

5.回帖信息表:回帖編號、回帖主題、回帖內容、屏蔽標誌、回帖時間.

6.管理員信息表:管理員編號、賬號、password.

7.版主信息表:版主編號、子版編號、用戶編號、授予時間.

3.2.2 表結構

下面描寫敘述的是表結構,當中0表明否。-1表明是.

用戶信息表(users)。該表結構如表3.1.

3.1 用戶表

字段名

類型

長度

是否爲空

是否主鍵

備註

userId

int

11

0

-1

用戶編號

userName

varchar

32

-1

0

username

userPass

varchar

32

-1

0

password

realityName

varchar

32

-1

0

用戶真實名

sex

varchar

10

-1

0

性別

email

varchar

50

-1

0

用戶郵件

OICQ

varchar

15

-1

0

用戶QQ

birthday

varchar

20

-1

0

用戶生日

address

varchar

100

-1

0

用戶所在地

ceat

int

11

-1

0

用戶積分

fettle

int

11

-1

0

狀態

type

int

11

-1

0

用戶類型

registerT

varchar

20

-1

0

註冊時間

主板塊信息表(board),字段如表3.2.

表3..2  主板塊信息表

字段名

類型

長度

是否爲空

是否主鍵

備註

boardId

int

11

0

-1

板塊編碼

boardN

varchar

200

-1

0

板塊名稱

boardOrderN

int

11

-1

0

版塊順序

子版塊信息(subboard),字段如表3.3.

3.3  子版塊信息表

字段名

類型

長度

是否爲空

是否主鍵

備註

subBoardId

int

11

0

-1

子版塊編號

boardId

int

11

-1

0

板塊編碼

subBoardN

varchar

200

-1

0

子版塊名稱

subBoardD

varchar

200

-1

0

子版塊描寫敘述

topicNumb

int

11

-1

0

子版塊主帖數

replyNumb

int

11

-1

0

子版塊回帖數

rowsTopicP

int

11

-1

0

頁顯示主題數

rowsReplyP

int

11

-1

0

頁顯示回帖數

topicPoint

int

11

-1

0

新主題分

replyPoint

int

11

-1

0

回帖分

subBoardO

int

11

-1

0

順序

creatTime

varchar

30

-1

0

建板時間

主題帖信息表(topic),字段如表3.4.

3.4  主題帖信息表

字段名

類型

長度

是否爲空

是否主鍵

備註

topicId

int

11

0

-1

主帖編號

subBoardId

int

11

-1

0

子版塊編號

userId

int

11

-1

0

用戶編號

topicTitle

varchar

200

-1

0

主帖標題

topicContent

varchar

250

-1

0

主帖內容

topSign

int

11

-1

0

置頂標誌

distillateSign

int

11

-1

0

加精標誌

dotNumber

int

11

-1

0

點擊率

publishTime

varchar

20

-1

0

公佈時間

 

 

 

 

回帖信息表(reply),字段如表3.5所看到的.

3.5  回帖信息表

字段名

類型

長度

是否爲空

是否主鍵

備註

replyId

int

11

0

-1

回帖編號

topicId

int

11

-1

0

主題編號

userId

int

11

-1

0

用戶編號

replyTitle

varchar

200

-1

0

回帖主題

replyContent

varchar

250

-1

0

回帖內容

screenSign

int

11

-1

0

屏蔽標誌

replyTime

varchar

20

-1

0

回帖時間

管理員信息表(admin),字段如表3.6所看到的.

3.6  管理員信息表

字段名

類型

長度

是否爲空

是否主鍵

備註

userId

int

11

0

-1

管理員編號

userName

varchar

32

-1

0

管理員名稱

userPass

varchar

32

-1

0

password

版主信息表(editionmaster),字段如表3.7所看到的.

3.7 版主信息表

字段名

類型

長度

是否爲空

是否主鍵

備註

editionMasterId

int

11

0

-1

版主編號

subBoardId

int

11

-1

0

子版編號

userId

int

11

-1

0

用戶編號

accreditTime

varchar

20

-1

0

授予時間

依據以上的分析創建下面關係的數據庫表.

1.用戶與版主的關係,一個用戶可以充當多個版主,而一個版快僅僅贊成出現一個版主.這代表用戶與版主之間存在着一對多的聯繫.

2.用戶與主題帖的關係,一個用戶可以發多個主題帖,但是一個主題帖僅僅能是一個用戶發表.這代表用戶與主題帖之間存在着一對多的聯繫.

3.用戶和回帖關係。一個用戶可以發回多個帖。但是一個帖子僅僅能由一個用戶來發表.這代表用戶與回帖之間存在着一對多的聯繫.

4.主題帖和回帖關係,一個主題帖可以有多個回帖,但是一個回帖僅僅屬於一個主題貼.這代表主題帖與回帖之間存在着一對多的聯繫.

5.主版塊和分版塊的關係,一個主版塊下可以有多個子版塊。但是一個子版塊僅僅屬於一個主版塊.這代表主版塊與分版塊之間存在着一對多的聯繫.

依據以上描寫敘述得出實體關係圖。如圖3.4所看到的.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4 具體設計

4.1 系統前臺視圖層具體設計

前臺模塊的功能,分爲用戶註冊、用戶登陸、用戶註銷、改動我的信息、查看版面、查看主題、查看回復、發表主題和發表回帖.由此設計的前臺主頁如圖4.1所看到的.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4.2 系統後臺視圖層具體設計

用戶分爲版主、管理員、會員用戶.版主的權限用於維護本身版面的主題,包含刪除主題、將主題置頂、設置精華帖;管理員的功能是會員用戶管理、版塊信息管理、帖子信息管理和系統用戶管理.具體有刪除用戶,改動用戶權限、添加版塊、刪除版塊、查詢版塊、刪除主題、改動主題屬性、新增功能權限、查詢功能權限、刪除功能權限、新增版塊權限、查詢版塊權限、刪除版塊權限.管理員不能刪除系統內置管理員.系統內置管理員具備站點的一切功能.

管理員經過admin.jsp頁面登陸到主頁。主頁上顯示後臺管理相應的超連接,在管理頁面有會員用戶管理、版塊信息管理、帖子信息管理和系統用戶管理.由此設計的後臺主頁如圖4.2所看到的.

 

 

 

 

 

 

 

 

5 系統實現

5.1 執行環境

1.軟件環境

操做系統是WindowsXP Professional或以上版本號;數據庫用MySQL Server 5.1或以上版本號。JDK1.5或以上版本號,Tomcat6.0或以上版本號.

2.硬件環境

內存至少爲1GMCPU要求1GHZ以上;硬盤容量40G以上.

3.安裝路徑

安裝MySQL數據庫後。執行 sql腳本;安裝JDK再安裝Tomcat,並將bbs.war包放在Tomcatwebapp文件夾;啓動Tomcat。在瀏覽器輸入http://localhost:8080/MyBBS/訪問學術交流論壇的首頁.

5.2 系統架構概述

以登錄流程爲例來介紹系統實現的整體架構.登錄流程圖如圖5.1所看到的..

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

View層的頁面是Login.jspsuccess.jsp.Controller層的MVC包的ControllerServlet.javaIAction.javaParseConfiguration.java來解析請求和重定向到頁面.

Model層的Web.action包的DoLogin.java等待request請求到達後解析封裝請求參數;Web.from包的LoginUserBean.java封裝數據給 Dologin.java使用。Biz包有FrontBiz.java接口。Biz.impl包的FrontBizImpl.java接受action 提交的封裝數據.biz 進行數據處理前把數據交給 dao 來處理;Dao包有UserDao.java接口,Dao.impl包的UserDaoJdbcImpl.java實現類和BaseDao.java接受 biz 的數據與後臺數據庫交互.並返回查詢結果給biz進行檢查;Factory包的BizFactory.javaaction biz 交互時,在action中生產 biz 層對象。DaoFactory.javabiz dao 交互時。在biz層中生產 dao層對象,來減小高層與基礎層的偶合度.;在src 文件夾的配置文件action-config.xml來配置Action和視圖跳轉的相應關係;配置文件biz-config.xml和配置文件dao-config.xml用來配置對象之間的依賴關係.

5.3 數據庫鏈接模塊實現

系統採用JSPMVC架構,用JDBC鏈接數據庫,在pache-tomcat-6.0.36\conf文件夾中的context.xml配置JNDI,鏈接數據庫的基本類爲BaseDao.java.

1. BaseDao 

public class BaseDao {

private static DataSource ds = null;

private static DataSource getDataSource() {

if (ds == null) {

try {

Context initContext = new InitialContext();

Context envContext = (Context) initContext

.lookup("java:/comp/env");

ds = (DataSource) envContext.lookup("jdbc/myblog");

} catch (NamingException e) {

e.printStackTrace();

}

}

return ds;

}

protected List findList(String sqlString, Class clazz) {

List beans = null;

try {

QueryRunner qr = new QueryRunner(getDataSource());

beans = (List) qr.query(sqlString, new BeanListHandler(clazz));

} catch (SQLException e) {

e.printStackTrace();

}

return beans;

}

protected List findTotalList(String sqlString){

List beans=null;

try{

QueryRunner qr=new QueryRunner(getDataSource());

beans=(List)qr.query(sqlString,new MapListHandler());

}catch(SQLException e){

e.printStackTrace();

}

return beans;

}

protected Object findObject(String sqlString, Class clazz) {

Object object = null;

try {

QueryRunner qr = new QueryRunner(getDataSource());

object = qr.query(sqlString, new BeanHandler(clazz));

} catch (SQLException e) {

e.printStackTrace();

}

return object;

}

protected int update(String sqlString) {

int rows = 0;

try {

QueryRunner qr = new QueryRunner(getDataSource());

rows = qr.update(sqlString);

} catch (SQLException e) {

e.printStackTrace();

}

return rows;

}

}

Dao中實現對數據表的添加、刪除、查詢、改動.Dao不進行邏輯操做.JSP頁面的請求交由相應的Action進行邏輯操做。當其要對數據庫進行操做時,將被操做的對象的相關參數傳給Dao.

5.4 前臺核心模塊實現

5.4.1 用戶模塊的實現

1. 用戶註冊:在register.jsp頁面輸入username,password,password提示問題、提示問題答案、安全郵箱信息提交數據到DoFrontUser.java中進行處理,在DoFrontUser.java中,假設username已經存在則返回註冊頁面,不然提示用戶註冊成功。並本身主動登陸到首頁.由此設計的用戶註冊時序圖,如圖5.2所看到的.

 

 

 

 

 

 

 

 

 

 

 

論壇平臺對用戶註冊請求進行圖像驗證碼和註冊信息的有效性校驗經過後,生成開戶基本信息並通知用戶.由時序圖設計的用戶註冊頁面如圖5.3所看到的.

 

 

 

 

 

 

 

 

 

 

2. 用戶登陸:用戶在登陸頁面輸入username和password登陸,系統將username和password提交到DoLogin.javadoIn ()方法,將提交數據轉交給Dao查詢,假設有正確的記錄則登陸成功,將用戶信息保存在Session並跳轉到主頁。不然返回登陸頁面,通知用戶登陸失敗由此設計的登錄時序圖如圖5.4所看到的.

 

 

 

 

 

 

 

 

 

平臺對用戶登陸請求進行圖像驗證碼和登陸信息的有效性校驗經過後跳轉到主頁.由時序圖設計的登錄頁面如圖5.5所看到的.

 

 

 

 

 

 

3. 用戶註銷請求提交到DoLogin.javadoOut 方法改動用戶離線時間、設置Session失效和返回到主頁.由此設計的用戶註銷時序圖如圖5.6所看到的.

 

 

 

 

 

 

 

 

 

平臺對註銷請求進行改動登陸記錄信息、設置session失效後跳轉到主頁.由時序圖設計的用戶註銷頁面圖如圖5.7所看到的.

 

 

 

 

 

5.4.2 版塊模塊的實現

查看版面:首頁顯示版塊信息。點擊子版塊顯示主題列表,點擊主題進入主題頁.

訪問論壇時。index.jsp<jsp:forward page="${ctx }/doIndexDisplay.action" /> 將請求轉給doIndexDisplay.java處理.doIndexDisplay. java從數據庫取出所有版塊信息及每個版塊的最新主題保存在JSPHttpServletRequest對象。數據由/front/index.jsp頁面顯示.

doIndexDisplay.java.

public class DoIndexDisplay implements IAction {

FrontBiz frontBiz = (FrontBiz)BizFactory.instance().getBiz("frontBiz");

public String excute(HttpServletRequest request) {

 Map<String,Object> map = frontBiz.displayIndex();

 request.setAttribute("boards", map.get("boards"));//所有的根版本號

 for (BoardBean boardBean : (List<BoardBean>)map.get("boards")) {

request.setAttribute(String.valueOf(boardBean.getBoardId()), map.get("sub"+boardBean.getBoardId()));//取出相應主版的所有的子版

 }

 request.setAttribute("topicTotalNumber",map.get("topicTotalNumber"));//主帖數

 request.setAttribute("replyTotalNumber",map.get("replyTotalNumber"));//回帖數

  request.setAttribute("userTotalNumber", map.get("userTotalNumber"));//用戶數

  request.setAttribute("newUser", map.get("newUser"));//新會員信息

  request.setAttribute("lastReplys", map.get("lastReplys"));//最後回覆信息

  request.setAttribute("editions", map.get("editions"));//管理員信息

  request.setAttribute("news", map.get("news"));//設置新聞

  return "display";

 }

}

5.4.3 主題模塊的實現

1. 查看主題:主頁上點擊版塊名時,將請求交給DoDisplaySubBoardInfo.java處理。DoDisplaySubBoardInfo.java取出模塊下所有主題信息和最後發表回覆的做者信息存入request對象,.由子版塊頁面顯示主題列表由此設計的查看主題時序圖如圖5.8所看到的.

 

 

 

 

 

 

 

 

 

平臺獲取主題信息由子版塊頁面顯示主題列表.查看主題時序圖設計的主題列表顯示頁圖如圖5.9所看到的.

 

 

 

 

 

 

 

 

 

2. 查看回貼:在主題顯示頁面點擊主題產生獲取主題信息動做,系統將動做交給FrontReplyAction.java處理,FrontReplyAction.java將請求交給DAO層,從DAO取出回帖信息和回帖的主題信息.由此設計的查看回帖時序圖如圖5.10所看到的.

 

 

 

 

 

 

 

 

 

平臺從DAO取出回帖信息和回帖的主題帖信息並顯示到頁面.由時序圖設計的回帖內容頁面如圖5.11所看到的.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3. 回帖:從回帖信息採集區域將回帖信息提交到後臺進行公佈回帖的前期處理並將處理結果的反饋到頁面.由此設計的發表回帖時序圖如圖5.12所看到的.

 

 

 

 

 

 

 

 

 

 

 

 

平臺進行公佈回帖的前期處理並將處理結果的反饋到頁面.由時序圖設計的回帖的頁面如圖5.13所看到的.

 

 

 

 

 

 

 

 

 

 

 

 

4. 編輯回帖.回帖更新前獲取原有帖子信息,.用戶可以編輯回帖的標題、內容和帖子狀態,回帖改動之後返回改動結果.由此設計的編輯回帖的時序圖5.15所看到的.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

平臺獲取原有帖子信息到編輯頁面。用戶可以編輯回帖的標題、內容和帖子狀態,回帖改動之後通知用戶.依據編輯回帖的時序圖設計的編輯回帖的頁面如圖5.15所看到的.

 

 

 

 

 

 

 

 

 

 

 

5. 發表主題:主題列表頁和回帖具體頁可以發表主題,點擊連接跳轉到主題信息採集頁,該頁將主題信息提交到FrontTopicAction.java進行新帖前期處理並將結果反饋到頁面.由此設計的發表主題時序圖如圖5.16所看到的.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1. 主題採集頁如圖5.17

 

平臺進行新帖前期處理和更新版塊信息和主題帖信息並將結果反饋到頁面.依據發表主題時序圖設計的主題採集頁面如圖5.17所看到的.

 

 

 

 

 

 

 

 

 

 

 

 

6. 版主管理主題的功能有移除、置頂、加精、編輯主題帖和刪除主題帖.由此設計的前臺版主管理主題時序圖如圖5.18所看到的.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

平臺在進行權限校驗經過後,對.主題帖進行置頂主題帖、加精主題帖、編輯主題帖和刪除主題帖操做,並將操做結果通知用戶.依據前臺版主管理主題時序圖設計的前臺版主功能頁面如圖5.19所看到的.

 

 

 

 

 

 

 

 

 

5.5 後臺核心模塊實現

5.5.1 後臺主版塊模塊的實現

1. 後臺主版塊信息處理:管理員點擊主版塊信息管理連接。系統將請求轉給BackBoardAction.javadoDisplay方法,doDisplay方法取出所有的版塊信息。跳轉到displayBoard.jsp頁分頁顯示所有的版塊信息.

A. 管理員在頁面點擊刪除。將版塊ID提交到BackBoardAction.javadoDelete方法來將版塊及該版塊下的主題刪除,級聯刪除主題的回帖.

B. 管理員點擊加入主版塊請求提交給BackBoardAction.javaadd方法來校驗權限,權限合法跳轉到版塊信息採集頁。提交板塊名稱信息到後臺BackBoardAction.javaaddAfter方法來加入版塊信息,反饋結果給管理員.

C. 管理員編輯主版塊時將版塊ID提交到BackBoardAction.javadoBeforeModify方法來查詢原有版塊信息顯示到modifyBoard.jsp。再將modifyBoard.jsp頁面的改動信息提交到BackBoardAction.javadoAfterModify方法進行主版塊信息更新;;

D. 管理員在頁面點擊上移、下移連接,將版塊ID提交到後臺。在BackBoardAction.javadoDowndoUp方法分別調整版塊顯示的上下順序.

依據上述設計的主版塊信息管理時序圖如圖5.20所看到的

 

 

 

 

 

 

 

 

 

 

 

平臺在進行權限校驗經過後。調整主版塊在前臺主頁顯示的上下順序、編輯主版塊、加入主版塊和刪除主版塊操做,並將操做結果通知用戶.依據主版塊信息管理時序圖設計的主版塊信息管理頁面如圖5.21所看到的.

 

 

 

 

 

 

 

 

 

2. 後臺子主版快信息處理:管理員點擊子主版塊信息管理,將請求提交給BackSubBoardAction.javadoGuide方法獲取主版塊信息並顯示到subBoardGuide.jsp頁面,以便管理員對相應主版塊的子版塊操做.管理員選擇相應的主版塊後進入子版塊信息管理頁面.由此設計的子版塊信息管理時序圖如圖5.22所看到的.

 

 

 

 

 

 

 

 

 

 

平臺在進行權限校驗經過後。調整子版塊在前臺主頁顯示的上下順序、編輯子版塊、加入子版塊和刪除子版塊操做。並將操做結果通知用戶.依據子版塊信息管理時序圖設計的子版塊信息管理頁面如圖5.23所看到的.

 

 

 

 

 

5.5.2 帖子信息管理模塊的實現

帖子信息管理包含主題貼信息管理、用戶回貼信息管理.

1. 主貼信息管理:點擊主貼信息管理跳轉到 displayTopicGuide.jsp頁面來依據主版塊和子版塊組合條件檢索主帖.主帖管理頁面中有刪除主帖和編輯主帖功能.編輯主帖有置頂和加精功能.採用把相應屬性值改成1的方式完畢.刪除主題是將主題id傳給BackTopicAction.javaDoDelete方法先刪除主帖的回帖,再調用TopicDaodeleteTopic(int id)刪除主帖.由此設計的主題管理時序圖如圖5.24所看到的.

 

 

 

 

 

 

.

 

 

 

 

 

 

 

 

 

 

 

 

 

平臺在進行權限校驗經過後,調整子版塊在前臺主頁顯示的上下順序、編輯子版塊、加入子版塊和刪除子版塊操做,並將操做結果通知用戶.依據主題管理時序圖設計的主帖管理頁面如圖5.25所看到的.

 

 

 

 

 

 

 

 

 

5.5.3 系統用戶管理模塊的實現

系統用戶管理的頁面中有改動用戶信息、刪除用戶和加入用戶功能.由此設計的系統用戶管理時序圖如圖5.26所看到的.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

平臺在進行權限校驗經過後,查找系統用戶顯示與頁面。進行改動用戶信息、刪除用戶和加入用戶操做,並將操做結果通知用戶.依據系統用戶管理時序圖設計的系統用戶管理頁面如圖5.27所看到的.

 

 

 

 

 

 

 

 

5.5.4 會員用戶管理模塊的實現

會員用戶管理有改動、刪除、加入用戶和對用戶鎖操做的功能.這裏介紹鎖的實現。僅僅需採用一個標誌字段就能夠.代碼例如如下:

//解鎖一個用戶

public String doUnLock(HttpServletRequest request)throws ServletException, IOException {

int userId=0;

try{

userId = Integer.valueOf(request.getParameter("userId"));

} catch (Exception e) {

e.printStackTrace();

return "error";

}

UserBean userBean = backBiz.findUserBean(userId);

ModifyUserFormBean modifyUserFormBean = null;

if(userBean!=null){

modifyUserFormBean = new ModifyUserFormBean();

modifyUserFormBean.setUserId(userBean.getUserId());

modifyUserFormBean.setUserName(userBean.getUserName());

modifyUserFormBean.setUserPass1(userBean.getUserPass());

modifyUserFormBean.setUserPass2(userBean.getUserPass());

modifyUserFormBean.setRealityName(userBean.getRealityName());

modifyUserFormBean.setSex(userBean.getSex());

modifyUserFormBean.setEmail(userBean.getEmail());

modifyUserFormBean.setOicq(userBean.getOICQ());

modifyUserFormBean.setBirthday(userBean.getBirthday());

modifyUserFormBean.setAddress(userBean.getAddress());

modifyUserFormBean.setCeat(userBean.getCeat());

modifyUserFormBean.setFettle(1); //設置爲 則鎖定狀態失效

modifyUserFormBean.setType(userBean.getType());

modifyUserFormBean.setRegisterTime(userBean.getRegisterTime());

}

if(!backBiz.updateUserInfo(modifyUserFormBean)){

request.setAttribute("msg", "錯誤,解鎖用戶出現數據庫錯誤!

");

}else{

request.setAttribute("msg", "恭喜。用戶已經正常解鎖!

");

}

return this.doAll(request);

}

//鎖定一個用戶

public String doLock(HttpServletRequest request)throws ServletException, IOException {

int userId=0;

try{

userId = Integer.valueOf(request.getParameter("userId"));

} catch (Exception e) {

e.printStackTrace();

return "error";

}

UserBean userBean = backBiz.findUserBean(userId);

if(userBean.getType()==2){

request.setAttribute("msg""版主不一樣意鎖定。");

return this.doAll(request);

}

ModifyUserFormBean modifyUserFormBean = null;

if(userBean!=null){

modifyUserFormBean = new ModifyUserFormBean();

modifyUserFormBean.setUserId(userBean.getUserId());

modifyUserFormBean.setUserName(userBean.getUserName());

modifyUserFormBean.setUserPass1(userBean.getUserPass());

modifyUserFormBean.setUserPass2(userBean.getUserPass());

modifyUserFormBean.setRealityName(userBean.getRealityName());

modifyUserFormBean.setSex(userBean.getSex());

modifyUserFormBean.setEmail(userBean.getEmail());

modifyUserFormBean.setOicq(userBean.getOICQ());

modifyUserFormBean.setBirthday(userBean.getBirthday());

modifyUserFormBean.setAddress(userBean.getAddress());

modifyUserFormBean.setCeat(userBean.getCeat());

modifyUserFormBean.setFettle(0); //設置爲 則鎖定該用戶

modifyUserFormBean.setType(userBean.getType());

modifyUserFormBean.setRegisterTime(userBean.getRegisterTime());

}

if(!backBiz.updateUserInfo(modifyUserFormBean)){

request.setAttribute("msg", "錯誤,鎖定用戶出現數據庫錯誤。");

}else{

request.setAttribute("msg", "恭喜。已經正常鎖定用戶!");

}

return this.doAll(request);

}

依據上述分析設計的會員用戶管理時序圖如圖5.28所看到的

 

 

 

 

 

 

 

 

 

 

 

 

 

 

平臺在進行權限校驗經過後,查找會員用戶顯示與頁面,進行改動、刪除、加入用戶和鎖住用戶操做,並將操做結果通知用戶.依據會員用戶管理時序圖設計的會員用戶管理頁面如圖5.29所看到的.

 

 

 

參考文獻

[1] 謝希仁.計算機網絡[M].北京:電子工業出版社,2008.

[2] 王海明,韓瑞霞.國內BBS現狀研究述評[J].蘭州石化職業技術學院學報,2004,(4):25.

[3] 張娜,陳寧,金焱,姜仲.java web開發技術教程[M].北京:清華大學出版社,2011.

[4] 劉亞濱,楊紅.精通Eclipse[M].北京:電子工業出版社,2004.

[5] 任永功,王政軍軟件技術與數據庫[J]. 計算機project,2006,32(5):60-62,134.

[6] 閻宏.JAVA與模式[M].北京:電子工業出版社,2002.

[7] 陳晉.論虛擬圖書館的個性化服務[J].情報探索,2003,(1):6-7.

[8] 李媛,劉滌塵.一個使用JavaBeans鏈接數據庫的JSP應用[J]. 控制project,2005,12(1):77-80.

[9] 程凱.JSP中文問題及一套整體解決方式[J].許昌學院學報,2006,25(5):77-80.

[10] 李興鋒,王移芝.基於JSPWeb動態數據庫交互技術的探討[J].計算機應用與軟件,200522(4):26-27.

[11] Tsui,FrankF.JSP EM DASH A RESEARCH SIGNAL PROCESSOR IN JOSEPHSON TECHNOLOGY[C]. IBM Journal of Research and Development,1980,24(2):243-252.

[12] 孫敏.JSP鏈接數據庫方法探討[J].電腦知識與技術,2005,3:21-22.

[13] 姜秀宇,曹蘊.基於JSP模式的在線考試系統的應用分析[J].電腦知識與技術(學術交流), 2006,(11):122-146.

[14] 王正成.基於J2EE技術的企業管理信息系統設計[J].科技進步與對策,2004,21(10):152-154.

[15] 屈霞.基於JSP的數據庫應用程序安全訪問控制設計[J].電腦開發與應用,2005,18(6):15-l6.

[16] 姚春龍.數據庫系統基礎教程[M].北京:航空航天大學出版社,2003.

[17] Javey.S.CONCEPT OF 'CORRESPONDENCE' IN JSP[C].Proceedings of the Hawaii International Conference on System Science,1987,2:14-22. 

[18] Markus Aleksy,Axel Korthaus,Martin Schader.Use Java and the CORBA realization distribute type system[J].Journal of Pingxiang College,2005,(4):104-105.

[19] 史志國.基於JSP的教務管理系統設計[J].長春工業大學學報(天然科學版),2008,29(3):306-310.

相關文章
相關標籤/搜索