![BBS論壇需求文檔_第1頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/6/a452bf79-ee86-4ced-9fdf-2be298d8f3f3/a452bf79-ee86-4ced-9fdf-2be298d8f3f31.gif)
![BBS論壇需求文檔_第2頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/6/a452bf79-ee86-4ced-9fdf-2be298d8f3f3/a452bf79-ee86-4ced-9fdf-2be298d8f3f32.gif)
![BBS論壇需求文檔_第3頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/6/a452bf79-ee86-4ced-9fdf-2be298d8f3f3/a452bf79-ee86-4ced-9fdf-2be298d8f3f33.gif)
![BBS論壇需求文檔_第4頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/6/a452bf79-ee86-4ced-9fdf-2be298d8f3f3/a452bf79-ee86-4ced-9fdf-2be298d8f3f34.gif)
![BBS論壇需求文檔_第5頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/6/a452bf79-ee86-4ced-9fdf-2be298d8f3f3/a452bf79-ee86-4ced-9fdf-2be298d8f3f35.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、. . . . 目錄1 引言1.1 論壇發(fā)展概況什么是BBS論壇那么什么是BBS(論壇)呢?BBS的英文全稱是Bulletin Board System,翻譯為中文就是“電子布告欄系統(tǒng)”。BBS最早是用來公布股市價格等類信息的,當(dāng)時BBS連文件傳輸?shù)墓δ芏紱]有,而且只能在蘋果機(jī)上運(yùn)行。早期的BBS與一般街頭和校園的公告板性質(zhì)一樣,只不過是通過來傳播或獲得消息而已。一直到開始普與之后,有些人嘗試將蘋果計算機(jī)上的BBS轉(zhuǎn)移到個人計算機(jī)上,BBS才開始漸漸普與開來。近些年來,由于愛好者們的努力,BBS的功能得到了很大的擴(kuò)充。目前,通過BBS系統(tǒng)可隨時取得各種最新的信息;也可以通過BBS系統(tǒng)來和別人討
2、論計算機(jī)等等各種有趣的話題;還可以利用BBS系統(tǒng)來發(fā)布一些“征友”、“廉價轉(zhuǎn)讓”、“招聘人才”與“求職應(yīng)聘”等啟事;更可以召集親朋好友到聊天室高談闊論這個精彩的天地就在你我的身旁,只要您在一臺可以訪問互聯(lián)網(wǎng)的計算機(jī)旁,就可以進(jìn)入這個交流平臺,來享用它的種種服務(wù)。目前,通過BBS系統(tǒng)可隨時取得國際最新的軟件與信息,也可以通過BBS系統(tǒng)來和別 人討論計算機(jī)軟件、硬件、Internet、多媒體、程序設(shè)計以與醫(yī)學(xué)等等各種有趣的話題,更可以利用BBS系統(tǒng)來刊登一些“征友”、“廉價轉(zhuǎn)讓”與“公司產(chǎn)品”等啟事,而且這個園地就在你我的身旁。只要您擁有1臺計算機(jī)、1只調(diào)制解調(diào)器和1條線,就能夠進(jìn)入這個“超時代”
3、的領(lǐng)域,進(jìn)而去享用它無比的威力!首先說明一下,上面說的“論壇”一般就是大家口中常提的BBS。在網(wǎng)絡(luò)以外的現(xiàn)實世界中,“論壇”是指一種高規(guī)格、有長期主辦組織、多次召開的研討會議。著名的論壇有:博鰲亞洲論壇,精英外貿(mào)論壇一種后綴修飾詞,一般用于企業(yè)、個人、等用詞。比如:80后之窗論壇、生活121論壇、企業(yè)論壇、愛看txt小說論壇、論壇會議、百度論壇等。論壇的分類論壇的發(fā)展也如同網(wǎng)絡(luò),雨后春筍般的出現(xiàn),并迅速的發(fā)展壯大。現(xiàn)在的論壇幾乎涵蓋了我們生活的各個方面,幾乎每一個人都可以找到自己感興趣或者需要了解的專題性論壇,而各類,綜合性門戶或者功能性專題也都青睞于開設(shè)自己的論壇,以促進(jìn)網(wǎng)友之間的交流,增加
4、互動性和豐富的容。論壇就其專業(yè)性可分為以下兩類:一、綜合類論壇綜合類的論壇包含的信息比較豐富和廣泛,能夠吸引幾乎全部的網(wǎng)民來到論壇,但是由于廣便難于精,所以這類的論壇往往存在著弊端即不能全部做到精細(xì)和面面俱到。通常大型的門戶有足夠的人氣和凝聚力以與強(qiáng)大的后盾支持能夠把門戶類做到很強(qiáng)大,但是對于小型規(guī)模的網(wǎng)絡(luò)公司,或個人簡歷的論壇站,就傾向于選擇專題性的論壇,來做到精致。二、專題類論壇 專題論壇此類論壇是相對于綜合類論壇而言,專題類的論壇,能夠吸引真正志同道合的人一起來交流探討,有利于信息的分類整合和搜集,專題性論壇對學(xué)術(shù)科研教學(xué)都起到重要的作用,例如購物類論壇、軍事類論壇
5、,情感傾訴類論壇,電腦愛好者論壇,動漫論壇,這樣的專題性論壇能夠在單獨(dú)的一個領(lǐng)域里進(jìn)行版塊的劃分設(shè)置,但是有的論壇,把專題性直接坐到最細(xì)化,這樣往往能夠取到更好的效果,如返利論壇、養(yǎng)貓人論壇等等,吉他論壇,90后創(chuàng)業(yè)論壇等。論壇功能性如果按照論壇的功能性來劃分,又可分為一、教學(xué)型論壇這類論壇通常如同一些教學(xué)類的博客?;蛘呤墙虒W(xué),中心放在對一種知識的傳授和學(xué)習(xí),在計算機(jī)軟件等技術(shù)類的行業(yè),這樣的論壇發(fā)揮著重要的作用,通過在論壇里瀏覽帖子,發(fā)布帖子能迅速的與很多人在網(wǎng)上進(jìn)行技術(shù)性的溝通和學(xué)習(xí)。譬如金蝶友商網(wǎng)。二、推廣型論壇這類論壇通常不是很受網(wǎng)民的歡迎,因其生來就注定是要作為廣告的形式,為某一個企
6、業(yè),或某一種產(chǎn)品進(jìn)行宣傳服務(wù),從2005年起,這樣形式的論壇很快的成立起來,但是往往這樣的論壇,很難具有吸引人的性質(zhì),單就其宣傳推廣的性質(zhì),很難有大作為,所以這樣的論壇壽命經(jīng)常很短,論壇中的會員也幾乎是由受雇傭的人員非自愿的組成。三、地方性論壇地方性論壇是論壇中娛樂性與互動性最強(qiáng)的論壇之一。不論是大型論壇中的地方站,還是專業(yè)的地方論壇,都有很熱烈的網(wǎng)民反向,比如百度、貼吧、 貼吧 、同鄉(xiāng)網(wǎng)或者是清華大學(xué)論壇 論壇之家論壇 羅定E天空等,地方性論壇能夠更大距離的拉近人與人的溝通,另外由于是地方性的論壇,所以對其中的網(wǎng)民也有了一定行的局域限制,論壇中的人或多或少都來自于一樣的地
7、方,這樣即有那么點點的真實的安全感,也少不了網(wǎng)絡(luò)特有的朦朧感,所以這樣的論壇常常受到網(wǎng)民的歡迎。四、交流性論壇交流性的論壇又是一個廣泛的大類,這樣的論壇重點在于論壇會員之間的交流和互動,所以容也較 交流論壇豐富多樣,有供求信息,交友信息,線上線下活動信息,新聞等,這樣的論壇是將來論壇發(fā)展的大趨勢。1.2 技術(shù)選擇1.2.1 BS結(jié)構(gòu)BS即瀏覽器和服務(wù)器結(jié)構(gòu)。它是隨著Internet技術(shù)的興起,對C/S結(jié)構(gòu)的一種變化或者改進(jìn)的結(jié)構(gòu)。在這種結(jié)構(gòu)下,用戶工作界面是通過WWW瀏覽器來實現(xiàn),極少部分事務(wù)邏輯在前端(Browser)實現(xiàn),但是主要事務(wù)邏輯在服務(wù)器端(Server)實現(xiàn)
8、,形成所謂三層3-tier結(jié)構(gòu)。這樣就大大簡化了客戶端電腦載荷,減輕了系統(tǒng)維護(hù)與升級的成本和工作量,降低了用戶的總體成本(TCO)。以目前的技術(shù)看,局域網(wǎng)建立B/S結(jié)構(gòu)的網(wǎng)絡(luò)應(yīng)用,并通過Internet/Intranet模式下數(shù)據(jù)庫應(yīng)用,相對易于把握、成本也是較低的。它是一次性到位的開發(fā),能實現(xiàn)不同的人員,從不同的地點,以不同的接入方式(比如LAN, WAN, Internet/Intranet等)訪問和操作共同的數(shù)據(jù)庫;它能有效地保護(hù)數(shù)據(jù)平臺和管理訪問權(quán)限,服務(wù)器數(shù)據(jù)庫也很安全 。特別是在JAVA這樣的跨平臺語言出現(xiàn)之后,B/S架構(gòu)管理軟件更是方便、快捷、高效。 1.2
9、.2 Java技術(shù)Java Web框架簡介Java 的 Web框架雖然各不一樣,但基本也都是遵循特定的路數(shù)的:使用Servlet或者Filter攔截請求,使用MVC的思想設(shè)計架構(gòu),使用約定,XML或 Annotation實現(xiàn)配置,運(yùn)用Java面向?qū)ο蟮奶攸c,面向抽象實現(xiàn)請求和響應(yīng)的流程,支持Jsp,F(xiàn)reemarker,Velocity等視圖。Struts 2優(yōu)點:架構(gòu)簡單易于擴(kuò)展標(biāo)記庫很容易利用FreeMarker或者Velocity來定制基于控制器或者基于頁面的導(dǎo)航缺點:文檔組織得很差對新特征過分關(guān)注JDBCJDBC(Java Data Base Connectivity,java數(shù)據(jù)庫連
10、接)是一種用于執(zhí)行SQL語句的Java API,可以為多種關(guān)系數(shù)據(jù)庫提供統(tǒng)一訪問,它由一組用Java語言編寫的類和接口組成。JDBC為工具/數(shù)據(jù)庫開發(fā)人員提供了一個標(biāo)準(zhǔn)的API,據(jù)此可以構(gòu)建更高級的工具和接口,使數(shù)據(jù)庫開發(fā)人員能夠用純 Java API 編寫數(shù)據(jù)庫應(yīng)用程序,同時,JDBC也是個商標(biāo)名。有了JDBC,向各種關(guān)系數(shù)據(jù)發(fā)送SQL語句就是一件很容易的事。換言之,有了JDBC API,就不必為訪問Sybase數(shù)據(jù)庫專門寫一個程序,為訪問Oracle數(shù)據(jù)庫又專門寫一個程序,或為訪問Informix數(shù)據(jù)庫又編寫另一個程序等等,程序員只需用JDBC API寫一個程序就夠了,它可向相應(yīng)數(shù)據(jù)庫發(fā)送
11、SQL調(diào)用。同時,將Java語言和JDBC結(jié)合起來使程序員不必為不同的平臺編寫不同的應(yīng)用程序,只須寫一遍程序就可以讓它在任何平臺上運(yùn)行,這也是Java語言“編寫一次,處處運(yùn)行”的優(yōu)勢。Java數(shù)據(jù)庫連接體系結(jié)構(gòu)是用于Java應(yīng)用程序連接數(shù)據(jù)庫的標(biāo)準(zhǔn)方法。JDBC對Java程序員而言是API,對實現(xiàn)與數(shù)據(jù)庫連接的服務(wù)提供商而言是接口模型。作為API,JDBC為程序開發(fā)提供標(biāo)準(zhǔn)的接口,并為數(shù)據(jù)庫廠商與第三方中間件廠商實現(xiàn)與數(shù)據(jù)庫的連接提供了標(biāo)準(zhǔn)方法。JDBC使用已有的SQL標(biāo)準(zhǔn)并支持與其它數(shù)據(jù)庫連接標(biāo)準(zhǔn),如ODBC之間的橋接。JDBC實現(xiàn)了所有這些面向標(biāo)準(zhǔn)的目標(biāo)并且具有簡單、嚴(yán)格類型定義且高性能實
12、現(xiàn)的接口。Java 具有堅固、安全、易于使用、易于理解和可從網(wǎng)絡(luò)上自動下載等特性,是編寫數(shù)據(jù)庫應(yīng)用程序的杰出語言。所需要的只是 Java應(yīng)用程序與各種不同數(shù)據(jù)庫之間進(jìn)行對話的方法。而 JDBC 正是作為此種用途的機(jī)制。JDBC 擴(kuò)展了 Java 的功能。例如,用 Java 和 JDBC API 可以發(fā)布含有 applet 的網(wǎng)頁,而該 applet 使用的信息可能來自遠(yuǎn)程數(shù)據(jù)庫。企業(yè)也可以用 JDBC 通過 Intranet 將所有職員連到一個或多個部數(shù)據(jù)庫中(即使這些職員所用的計算機(jī)有 Windows、 Macintosh 和UNIX 等各種不同的操作系統(tǒng))。隨著越來越多的程序員開始使用Ja
13、va 編程語言,對從 Java 中便捷地訪問數(shù)據(jù)庫的要求也在日益增加。MIS 管理員們都喜歡 Java 和 JDBC 的結(jié)合,因為它使信息傳播變得容易和經(jīng)濟(jì)。企業(yè)可繼續(xù)使用它們安裝好的數(shù)據(jù)庫,并能便捷地存取信息,即使這些信息是儲存在不同數(shù)據(jù)庫管理系統(tǒng)上。新程序的開發(fā)期很短。安裝和版本控制將大為簡化。程序員可只編寫一遍應(yīng)用程序或只更新一次,然后將它放到服務(wù)器上,隨后任何人就都可得到最新版本的應(yīng)用程序。對于商務(wù)上的銷售信息服務(wù), Java 和JDBC 可為外部客戶提供獲取信息更新的更好方法。簡單地說,JDBC 可做三件事:與數(shù)據(jù)庫建立連接、發(fā)送 操作數(shù)據(jù)庫的語句并處理結(jié)果。JDBC 是個
14、"低級"接口,也就是說,它用于直接調(diào)用 SQL 命令。在這方面它的功能極佳,并比其它的數(shù)據(jù)庫連接 API 易于使用,但它同時也被設(shè)計為一種基礎(chǔ)接口,在它之上可以建立高級接口和工具。高級接口是"對用戶友好的"接口,它使用的是一種更易理解和更為方便的 API,這種API在幕后被轉(zhuǎn)換為諸如 JDBC 這樣的低級接口。在關(guān)系數(shù)據(jù)庫的"對象/關(guān)系"映射中,表中的每行對應(yīng)于類的一個實例,而每列的值對應(yīng)于該實例的一個屬性。于是,程序員可直接對 Java 對象進(jìn)行操作;存取數(shù)據(jù)所需的 SQL 調(diào)用將在"掩蓋下"自動生成。此外還可提
15、供更復(fù)雜的映射,例如將多個表中的行結(jié)合進(jìn)一個 Java 類中。隨著人們對 JDBC 的興趣日益增漲,越來越多的開發(fā)人員一直在使用基于 JDBC 的工具,以使程序的編寫更加容易。程序員也一直在編寫力圖使最終用戶對數(shù)據(jù)庫的訪問變得更為簡單的應(yīng)用程序。例如應(yīng)用程序可提供一個選擇數(shù)據(jù)庫任務(wù)的菜單。任務(wù)被選定后,應(yīng)用程序?qū)⒔o出提示與空白供填寫執(zhí)行選定任務(wù)所需的信息。所需信息輸入應(yīng)用程序?qū)⒆詣诱{(diào)用所需的 SQL 命令。在這樣一種程序的協(xié)助下,即使用戶根本不懂 SQL 的語法,也可以執(zhí)行數(shù)據(jù)庫任務(wù)。1.3 開發(fā)工具M(jìn)yEclipse企業(yè)級工作平臺(MyEclipse Enterprise Workbench
16、 ,簡稱MyEclipse)是對EclipseIDE的擴(kuò)展,利用它我們可以在數(shù)據(jù)庫和JavaEE的開發(fā)、發(fā)布以與應(yīng)用程序服務(wù)器的整合方面極大的提高工作效率。它是功能豐富的JavaEE集成開發(fā)環(huán)境,包括了完備的編碼、調(diào)試、測試和發(fā)布功能,完整支持HTML,Struts,JSP,CSS,Javascript,SQL,Hibernate。編輯本段分類在結(jié)構(gòu)上,MyEclipse的特征可以被分為7類:1 JavaEE模型2 WEB開發(fā)工具3 E開發(fā)工具4 應(yīng)用程序服務(wù)器的連接器5 JavaEE項目部署服務(wù)6 數(shù)據(jù)庫服務(wù)7 MyEclipse整合幫助對于以上每一種功能上的類別,在Eclipse中都有相應(yīng)
17、的功能部件,并通過一系列的插件來實現(xiàn)它們。MyEclipse結(jié)構(gòu)上的這種模塊化,可以讓我們在不影響其他模塊的情況下,對任一模塊進(jìn)行單獨(dú)的擴(kuò)展和升級。簡單而言,MyEclipse是Eclipse的插件,也是一款功能強(qiáng)大的JavaEE集成開發(fā)環(huán)境,支持代碼編寫、配置、測試以與除錯,MyEclipse6.0以前版本需先安裝Eclipse。MyEclipse6.0以后版本安裝時不需安裝Eclipse。2 需求分析2.1軟件分層與部署分層是軟件設(shè)計中非常重要的思想,特別是面對較大的軟件系統(tǒng)。分而治之是計算機(jī)中經(jīng)常采用的一種方法。比如TCP/IP七層協(xié)議棧就是典型的分層應(yīng)用。任何一個合格的軟件開發(fā)者都必須
18、掌握的分層思想。下面是軟件分層的幾個基本概念:一、分層 1、經(jīng)典的三層理論將應(yīng)用分為三個層次 (1)表現(xiàn)層(Presentation Layer):顯示信息,處理用戶的請求 (2)領(lǐng)域/邏輯層(Domain Logic Layer):邏輯,實際的業(yè)務(wù)活動,系統(tǒng)中真正的核心 (3)數(shù)據(jù)訪問層(Data Access Layer):與數(shù)據(jù)庫、消息系統(tǒng)等的通信 實際應(yīng)用中,有
19、四層的五層(如:J2EE)的。在 Windows .NET 中表示層可以通用數(shù)據(jù)感知組件訪問數(shù)據(jù)庫,使用很方便。但是這種技術(shù)破壞了層和層之間的依賴關(guān)系,對于大型軟件的開發(fā)一般是不允許的,小型軟件使用也未嘗不可。 2、基本原則:領(lǐng)域?qū)雍蛿?shù)據(jù)源層絕對不要依賴于表現(xiàn)層。二、表現(xiàn)層 用戶界面,Web頁面或Windows窗體。三、領(lǐng)域?qū)?#160; 領(lǐng)域邏輯的組織,三個模式: (1)事務(wù)腳本:結(jié)構(gòu)化 (2)領(lǐng)域模型:面向?qū)ο?#160;&
20、#160; (3)表模塊:與記錄集相關(guān)。.NET中含有基于記錄集的工具(DataTable/DataSet),則使用表模塊較為方便。四、數(shù)據(jù)訪問層 為數(shù)據(jù)庫表建立入口,使用入口的兩種基本方法: (1)行數(shù)據(jù)入口:每一行一個實例,面向?qū)ο蟮姆绞健?#160; (2)表數(shù)據(jù)入口:記錄集,如.NET中的DataTable,DataSet2.2 系統(tǒng)功能模塊2.3 系統(tǒng)運(yùn)行流程帖子發(fā)布流程 :開始登錄密碼框判斷輸入密碼是否正確輸入?N Y論壇主頁面進(jìn)入論壇子模塊點擊發(fā)帖按鈕編輯帖子并發(fā)布退出3
21、系統(tǒng)設(shè)計3.1 業(yè)務(wù)模型控制器struts中,基本的控制器組件是ActionServlet類中的實例servlet,實際使用的servlet在配置文件中由一組映射(由ActionMapping類進(jìn)行描述)進(jìn)行定義。Struts對Model,View和Controller都提供了對應(yīng)的組件。ActionServlet,這個類是Struts的核心控制器,負(fù)責(zé)攔截來自用戶的請求。Action,這個類通常由用戶提供,該控制器負(fù)責(zé)接收來自ActionServlet的請求,并根據(jù)該請求調(diào)用模型的業(yè)務(wù)邏輯方法處理請求,并將處理結(jié)果返回給JSP頁面顯示。Model部分由JavaBean組成,ActionFor
22、m用于封裝用戶的請求參數(shù),封裝成ActionForm對象,該對象被ActionServlet轉(zhuǎn)發(fā)給Action,Action根據(jù)ActionForm里面的請求參數(shù)處理用戶的請求。JavaBean則封裝了底層的業(yè)務(wù)邏輯,包括數(shù)據(jù)庫訪問等。View部分該部分采用JSP實現(xiàn)。Struts提供了豐富的標(biāo)簽庫,通過標(biāo)簽庫可以減少腳本的使用,自定義的標(biāo)簽庫可以實現(xiàn)與Model的有效交互,并增加了現(xiàn)實功能。對應(yīng)上圖的JSP部分。Controller組件Controller組件有兩個部分組成系統(tǒng)核心控制器,業(yè)務(wù)邏輯控制器。系統(tǒng)核心控制器,對應(yīng)上圖的ActionServlet。該控制器由Struts框架提供,繼
23、承 Servlet類,因此可以配置成標(biāo)注的Servlet。該控制器負(fù)責(zé)攔截所有的 請求,然后根據(jù)用戶請求決定是否要轉(zhuǎn)給業(yè)務(wù)邏輯控制器。業(yè)務(wù)邏輯控制器,負(fù)責(zé)處理用戶請求,本身不具備處理能力,而是調(diào)用Model來完成處理。對應(yīng)Action部分。編輯本段框架struts框架具有組件的模塊化,靈活性和重用性的優(yōu)點,同時簡化了基于MVC的web應(yīng)用程序的開發(fā)。struts可以清晰地區(qū)分控制,事務(wù)邏輯和外觀,從而簡化了開發(fā)應(yīng)用程序的過程。struts提供的類使得開發(fā)工作更加簡單,這些類包括:a. 控制程序流程的類b. 實現(xiàn)和執(zhí)行程序事務(wù)邏輯的類c. 自定義的標(biāo)記庫使得創(chuàng)建和驗證HTML表單更加容易3.2
24、數(shù)據(jù)庫設(shè)計3.2.1管理員表(admin_group)3.2.2 游客表(guest)3.2.3 用戶表(user)3.2.4 文章大類表(large_class)3.2.5 文章子類表(sub_class)3.2.6文章表(article)3.2.6文章操作表(operatelog)3.2.6角色表(role)3.2.6角色權(quán)限表(role_permission)3.3 DAO 設(shè)計1. 多個DAO接口; 2. 多個代理類;3. 實現(xiàn)DAO接口的具體類; 4.
25、 數(shù)據(jù)傳遞對象;5. 一個DAO工廠類.3.3.1 DAO接口package org.gg.dao;import java.util.List;publicinterface IDAO<T, K> publicboolean doCreate(T vo) throws Exception;publicboolean doUpdate(T vo) throws Exception;publicboolean doRemove(Double id) throws Exception;public List<T> findAll(String keyWord) t
26、hrows Exception;public List<T> findAll(String keyWord,Double currentPage,Double lineSize) throws Exception;public Double findAllCount() throws Exception;package org.gg.dao;import org.gg.vo.Article;publicinterface IArticleDAO extends IDAO<Article, Double> public Double getCount(Double aid
27、) throws Exception; / 獲得文章的方問次數(shù)publicvoid setCount(Double aid, Double count) throws Exception; / 設(shè)置文章的方問次數(shù)public Article findById(Double aid) throws Exception;public Article findRecentlyArticle(Double id) throws Exception; / 獲得某人最近發(fā)的一篇文章package org.gg.dao;import org.gg.vo.LargeClass;publicinterface
28、ILargeClassDAO extends IDAO<LargeClass, String> public LargeClass findById(Double id) throws Exception;package org.gg.dao;import org.gg.vo.Role;publicinterface IRoleDAO extends IDAO<Role, Double> public Role findById(Double rid) throws Exception;package org.gg.dao;import org.gg.vo.RolePe
29、rmission;Publicinterface IRolePermissionDAO extends IDAO<RolePermission,Double> package org.gg.dao;import java.util.List;import org.gg.vo.SubClass;publicinterface ISubClassDAO extends IDAO<SubClass, String> public List<SubClass> findById(Double lid) throws Exception; / 查找某一大類下的所有子類
30、publicboolean doRemove(Double lid, Double sid) throws Exception; / 刪除某一大類下的一個子類public SubClass findById(Double lid, Double sid) throws Exception; / 查找某一大類下的一個子類package org.gg.dao;import org.gg.vo.User;publicinterface IUserDAO extends IDAO<User, String> publicboolean findLogin(User vo) throws E
31、xception;public User findById(Double id) throws Exception;public User findByName(String name) throws Exception ;3.3.2 DAO代理package xy;import java.util.List;import org.gg.dao.IArticleDAO;import org.gg.dao.impl.ArticleDAOImpl;import org.gg.dbc.DatabaseConnection;importorg.gg.vo.Article;p
32、ublicclassArticleDAOProxyimplements IArticleDAO private DatabaseConnection dbc = null;private IArticleDAO dao = null;private Double count; / 保存文章表記錄條數(shù)public ArticleDAOProxy() this.dbc = new DatabaseConnection();this.dao = new ArticleDAOImpl(this.dbc.getConnection();publicboolean doCreate(Article vo)
33、 boolean flag = false;try flag = this.dao.doCreate(vo); catch (Exception e) e.printStackTrace();return flag;publicboolean doRemove(Double aid) boolean flag = false;try flag = this.dao.doRemove(aid); catch (Exception e) e.printStackTrace();return flag;publicboolean doUpdate(Article vo) boolean flag =
34、 false;try flag = this.dao.doUpdate(vo); catch (Exception e) e.printStackTrace();return flag;public List<Article> findAll(String keyWord, Double currentPage,Double lineSize) List<Article> list = null;try list = this.dao.findAll(keyWord, currentPage, lineSize); catch (Exception e) e.print
35、StackTrace();return list;public List<Article> findAll(String keyWord) List<Article> list = null;try list = this.dao.findAll(keyWord); catch (Exception e) e.printStackTrace();return list;public Double findAllCount() try this.count = this.dao.findAllCount(); catch (Exception e) e.printStac
36、kTrace();returnthis.count;public Double getCount(Double aid) / 獲得文章的方問次數(shù)Double count = 0.0;try count = this.dao.getCount(aid); catch (Exception e) e.printStackTrace();return count;publicvoid setCount(Double aid, Double count) try this.dao.setCount(aid, count); catch (Exception e) e.printStackTrace()
37、;publicArticle findById(Double aid) Article article = null;try article = dao.findById(aid); catch (Exception e) e.printStackTrace();return article;publicArticle findRecentlyArticle(Double id) Article article = null;try article = this.dao.findRecentlyArticle(id); catch (Exception e) e.printStackTrace
38、();return article;后面略3.3.3 DAO實現(xiàn)package org.gg.dao.impl;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.Timestamp;import java.util.ArrayList;import java.util.List;import org.gg.dao.IArticleDAO;import org.gg.vo.Article;publicclass ArticleDAOImpl
39、implements IArticleDAO private Connection conn = null;private PreparedStatement pstmt = null;private Double count; / 保存文章表記錄條數(shù)public ArticleDAOImpl(Connection conn) this.conn = conn;publicboolean doCreate(Article vo) throws Exception boolean flag = false;String sql = "INSERT INTO article(id,sid
40、,title,content,createtime,lastedittime,visitcount,locked) VALUES(?,?,?,?,?,?,?,?)"this.pstmt = this.conn.prepareStatement(sql);this.pstmt.setDouble(1, vo.getId();this.pstmt.setDouble(2, vo.getSid();this.pstmt.setString(3, vo.getTitle();this.pstmt.setString(4, vo.getContent();this.pstmt.setTimes
41、tamp(5, new Timestamp(vo.getCreatetime().getTime();this.pstmt.setTimestamp(6,new Timestamp(vo.getLastedittime().getTime();this.pstmt.setDouble(7, vo.getVisitcount();this.pstmt.setBoolean(8, vo.isLocked();if (this.pstmt.executeUpdate() > 0) flag = true;return flag;publicboolean doRemove(Double aid
42、) throws Exception boolean flag = false;String sql = "DELETE FROM article WHERE aid=?"this.pstmt = this.conn.prepareStatement(sql);this.pstmt.setDouble(1, aid);if (this.pstmt.executeUpdate() > 0) flag = true;return flag;publicboolean doUpdate(Article vo) throws Exception boolean flag =
43、false;String sql = "UPDATE article SET id=?,sid=?,title=?,content=?,lastedittime=?,locked=? WHERE aid=?"this.pstmt = this.conn.prepareStatement(sql);this.pstmt = this.conn.prepareStatement(sql);this.pstmt.setDouble(1, vo.getId();this.pstmt.setDouble(2, vo.getSid();this.pstmt.setString(3, v
44、o.getTitle();this.pstmt.setString(4, vo.getContent();this.pstmt.setTimestamp(5,new Timestamp(vo.getLastedittime().getTime();this.pstmt.setBoolean(6, vo.isLocked();this.pstmt.setDouble(7, vo.getAid();if (this.pstmt.executeUpdate() > 0) flag = true;return flag;public List<Article> findAll(Str
45、ing keyWord, Double currentPage,Double lineSize) throws Exception / TODO Auto-generated method stubreturnnull;public List<Article> findAll(String keyWord) throws Exception List<Article> list = new ArrayList<Article>();ResultSet rs = null;Article article = null;String sql = "SE
46、LECT aid,id,sid,title,content,createtime,lastedittime,visitcount,locked FROM article WHERE title LIKE ? OR content LIKE ?"this.pstmt = this.conn.prepareStatement(sql);this.pstmt.setString(1, "%" + keyWord + "%");this.pstmt.setString(2, "%" + keyWord + "%"
47、);rs = this.pstmt.executeQuery();while (rs.next() && rs != null) article = new Article();article.setAid(rs.getDouble(1);article.setId(rs.getDouble(2);article.setSid(rs.getDouble(3);article.setTitle(rs.getString(4);article.setContent(rs.getString(5);article.setCreatetime(rs.getTimestamp(6);ar
48、ticle.setLastedittime(rs.getTimestamp(7);article.setVisitcount(rs.getDouble(8);article.setLocked(rs.getBoolean(9);list.add(article);return list;public Double findAllCount() throws Exception String sql = "SELECT aid FROM article"this.count = 0.0;ResultSet rs = null;this.pstmt = this.conn.pr
49、epareStatement(sql);while (rs.next() && rs != null) this.count+;returnthis.count;public Double getCount(Double aid) throws Exception Double count = 0.0;ResultSet rs = null;String sql = "SELECT count FROM user WHERE aid=?"this.pstmt = this.conn.prepareStatement(sql);this.pstmt.setDo
50、uble(1, aid);if (rs.next() && rs != null) count = rs.getDouble(1);return count;publicvoid setCount(Double aid, Double count) throws Exception String sql = "UPDATE user SET count=? WHERE aid=?"this.pstmt = this.conn.prepareStatement(sql);this.pstmt.setDouble(1, count);this.pstmt.set
51、Double(2, aid);public Article findById(Double aid) throws Exception ResultSet rs = null;Article article = new Article();String sql = "SELECT aid,id,sid,title,content,createtime,lastedittime,visitcount,locked FROM article WHERE aid=?"this.pstmt = this.conn.prepareStatement(sql);this.pstmt.s
52、etDouble(1, aid);rs = this.pstmt.executeQuery();if (rs.next() && rs != null) article.setAid(rs.getDouble(1);article.setId(rs.getDouble(2);article.setSid(rs.getDouble(3);article.setTitle(rs.getString(4);article.setContent(rs.getString(5);article.setCreatetime(rs.getTimestamp(6);article.setLas
53、tedittime(rs.getTimestamp(7);article.setVisitcount(rs.getDouble(8);article.setLocked(rs.getBoolean(9);return article;public Article findRecentlyArticle(Double id) throws Exception Article article = new Article();ResultSet rs = null;String sql = "SELECT aid,id,sid,title,content,createtime,lasted
54、ittime,visitcount,locked FROM article WHERE id=? " +"AND createtime=(SELECT MAX(createtime) FROM article)"this.pstmt = this.conn.prepareStatement(sql);this.pstmt.setDouble(1, id);rs = this.pstmt.executeQuery();if (rs.next() && rs != null) article.setAid(rs.getDouble(1);article
55、.setId(rs.getDouble(2);article.setSid(rs.getDouble(3);article.setTitle(rs.getString(4);article.setContent(rs.getString(5);article.setCreatetime(rs.getTimestamp(6);article.setLastedittime(rs.getTimestamp(7);article.setVisitcount(rs.getDouble(8);article.setLocked(rs.getBoolean(9);return article;后面略3.3
56、.4 DAO工廠package org.gg.dao.factory;import org.gg.dao.IArticleDAO;import org.gg.dao.ILargeClassDAO;import org.gg.dao.IRoleDAO;import org.gg.dao.IRolePermissionDAO;import org.gg.dao.ISubClassDAO;import org.gg.dao.IUserDAO;import xy.ArticleDAOProxy;import xy.LargeClassDAOProxy;import xy.RoleDAOProxy;import xy.RolePermissionDAOProxy;import xy.SubClassDAOProxy;import xy.UserDAOProxy;publicclass DAOFactory publ
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030全球電腦鎮(zhèn)痛泵行業(yè)調(diào)研及趨勢分析報告
- 2025-2030全球電動汽車高壓直流繼電器行業(yè)調(diào)研及趨勢分析報告
- 2025年全球及中國IO-Link信號燈行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 2025年全球及中國堆棧式CMOS圖像傳感器行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 經(jīng)典居間合同
- 農(nóng)機(jī)作業(yè)服務(wù)合同
- 環(huán)保設(shè)施運(yùn)營管理合同
- 熱長期供貨合同
- 安全監(jiān)控系統(tǒng)集成服務(wù)合同
- 政府與企業(yè)合作協(xié)議
- 普通話培訓(xùn)班合作協(xié)議書
- 《西方思想經(jīng)典》課件
- 中醫(yī)診療設(shè)備種類目錄
- 戰(zhàn)略管理與倫理
- 如何構(gòu)建高效課堂課件
- 徐金桂行政法與行政訴訟法新講義
- 瀝青拌合設(shè)備結(jié)構(gòu)認(rèn)知
- GB/T 13234-2018用能單位節(jié)能量計算方法
- (課件)肝性腦病
- 北師大版五年級上冊數(shù)學(xué)教學(xué)課件第5課時 人民幣兌換
- 工程回訪記錄單
評論
0/150
提交評論