【正文】
發(fā)現(xiàn)問題:無(wú) 。 功能描述: 給其他注冊(cè)用戶發(fā)送信息。到這里個(gè) 人數(shù)字圖書館系統(tǒng)的開發(fā)已經(jīng)進(jìn)入尾聲。 User user = (User)(current_user)。 return SUCCESS。 //信息詳細(xì)內(nèi)容 private Date sendtime。 Struts 2 的處理流程如下圖 410 所示。備忘錄的數(shù)據(jù)表如表 46 所示。 信息 : 每個(gè)注冊(cè)用戶都可以 給系統(tǒng)其他用戶發(fā)送信息 。 ( 2) 開閉原則: 軟件實(shí)體對(duì)擴(kuò)展是開放的,但對(duì)修改是關(guān)閉的,即在不修改一個(gè)軟件實(shí)體的基礎(chǔ)上去擴(kuò)展其功能。 信息管理用例圖說(shuō)明: ( 1)用例名稱 : 信息管理 ( 2)事件流 : ① 用戶進(jìn)入登陸界面,輸入用戶名和密碼 并提交, 登錄系統(tǒng); ② 登錄成功后 選擇 進(jìn)入 常用先選卡選擇信息模塊 ; ③ 查看其它用戶發(fā)過(guò)來(lái)的信息; ④ 回復(fù)信息; ⑤ 刪除信息。 從上一節(jié)的分析得到了系統(tǒng)結(jié)構(gòu)圖,由圖 31 可知系統(tǒng)的主要參與者有兩種:注冊(cè)用戶和系統(tǒng)管理員。 需求分析的方法有面向?qū)ο蟮姆治龇椒?、面向功能的分析方法和面向?shù)據(jù)的分析方法。在 Hibernate 的啟動(dòng)的過(guò)程中, Configuration 類的實(shí)例首先定位映射文檔位置、讀取配置,然后創(chuàng)建 SessionFactory 對(duì)象 [9]。該控制器負(fù)責(zé)攔截所有的 HTTP 請(qǐng)求,然后根據(jù)用戶請(qǐng)求決定是否要轉(zhuǎn)給業(yè)務(wù)邏輯控制器。 Struts 簡(jiǎn)介 Struts 是 Apache 軟件基金會(huì) (ASF)贊助的一個(gè) 開源 項(xiàng)目。 MVC 模式的目的是實(shí)現(xiàn)一種動(dòng)態(tài)的程序設(shè)計(jì),使后續(xù)對(duì)程序的修改和擴(kuò)展簡(jiǎn)化,并且使程序某一部分的重復(fù)利用成為可能。 4 信息科學(xué)與技術(shù)學(xué)院學(xué)士學(xué)位論文 2 理論知識(shí)技術(shù)介紹 近年來(lái) UML 建模語(yǔ)言得到廣泛的使用和設(shè)計(jì)師的追捧, Web 技術(shù)日新月異,本章將對(duì)論文中 使用到的 UML 建模語(yǔ)言和 應(yīng)用到的幾大主流技術(shù) MVC 模式、 Struts2框架、 Hibernate 框架和 Freemarker 組件 做一簡(jiǎn)單介紹,方便讀者更好的了解論文。在這種情況下,作為個(gè)人信息管理和知識(shí)組織的工具 —— 個(gè)人數(shù)字圖書館迅速發(fā)展起來(lái) [2]。 在這種情況下,作為個(gè)人信息管理和知識(shí)組織的工具 —— 個(gè)人數(shù)字圖書館迅速發(fā)展 起來(lái) ,個(gè)人數(shù)字 圖書館是數(shù)字圖書館發(fā)展中的新鮮事物,反映了網(wǎng)絡(luò)環(huán)境下信息用戶的個(gè)性化需求,是網(wǎng)絡(luò)信息資源管理的客觀要求,也是知識(shí)管理發(fā)展的必然。而個(gè)人競(jìng) 爭(zhēng)力的源泉 來(lái)源于 個(gè)人知識(shí)的管理 、 個(gè)人知識(shí)的學(xué)習(xí)、保存、使用、共享。 ( 4)系統(tǒng)設(shè)計(jì): 面向?qū)ο蟮?設(shè)計(jì) 原則,系統(tǒng)功能的設(shè)計(jì)、數(shù)據(jù)庫(kù)的設(shè)計(jì)、業(yè)務(wù)邏輯和 Web 層的設(shè)計(jì) 。 ( 5)實(shí)現(xiàn)圖:描述代碼部件的物理結(jié)構(gòu)及部件間的依賴關(guān)系。如果用戶通過(guò)某個(gè)視圖的控制器改變了模型的數(shù)據(jù),所有其它依賴于這些數(shù)據(jù)的視圖都應(yīng)反映到這些變化。 Struts 2 提供了豐富的標(biāo)簽庫(kù),通過(guò)標(biāo)簽庫(kù)可以減少腳本的使用,自定義的標(biāo)簽庫(kù)可以實(shí)現(xiàn)與 Model的有效交互,并增加了現(xiàn)實(shí)功能。這里用到了工廠模式。 本章小結(jié) 本章主要對(duì)系統(tǒng)中使用到的技術(shù)作了簡(jiǎn)單的介紹,首先介紹了 UML 建模語(yǔ)言中不同圖列表示的含義;其次介紹了 MVC 的三層結(jié)構(gòu)模式;然后對(duì) Struts、 Hibernate、Freemarker 簡(jiǎn)單的介紹了它們的來(lái)源、發(fā)展、技術(shù)核心和應(yīng)用。參與者由參與用例時(shí)所擔(dān)當(dāng)?shù)慕巧珌?lái)表示,一個(gè)參與者可以參與一個(gè)或多個(gè)用例。 ( 3)前置條件 : 用戶已登錄 個(gè)人數(shù)字圖書館系統(tǒng) 此圖書管理模塊的活動(dòng)圖如圖 34 所示。 面向?qū)ο笤O(shè)計(jì)的七個(gè)原則: ( 1) 單一職責(zé)原則 : 類的職責(zé)要單一,不能將太多的職責(zé)放在一個(gè)類中。 數(shù)據(jù)庫(kù)設(shè)計(jì) 在進(jìn)行數(shù)據(jù)庫(kù)的設(shè)計(jì)之前,先要明確系統(tǒng)的實(shí)體對(duì)象。 表 44 日志數(shù)據(jù)表 字段名稱 數(shù)據(jù)類型 字段大小 允許空 主鍵 diaryID int 10 否 是 username varchar 45 否 否 diaryType varchar 45 否 否 diaryTitle varchar 45 否 否 diaryContent varchar 255 否 否 diaryTime datetime 0 否 否 用戶實(shí)體與信息實(shí)體的 ER 圖如圖 45 所示。 25 信息科學(xué)與技術(shù)學(xué)院學(xué)士學(xué)位論文 U s e r I D U s e r N a m e S e x P a s s w o r d N i c k N a m e E m a i l D e s c r i p t i o n I f P u b l i cU s e r M e s s a g e I D M e s s a g e C o n t e n t S e n d N a m e T h e m e S e n d T i m e U s e r N a m eM e s s a g e+ e x e c u t e ( ) M e s s a g e I DM e s s a g e D e l+ e x e c u t e ( )+ i n s t e r ( )+ c h e c k ( ) M e s s a g e C o n t e n t R e c e i v e N a m e T h e m eM e s s a g e S e n d+ e x e c u t e ( ) M e s s a g e I D M e s s a g e C o n t e n t S e n d N a m e T h e m eM e s s a g e S h o w1n1nn1n1 圖 49 發(fā)送信息類圖 Web 層設(shè)計(jì) Web 層可以形象的描述為一個(gè)傳遞者、中間者的角色, 它在系統(tǒng)中的任務(wù)是簡(jiǎn)單的處理瀏覽器端的請(qǐng)求,如驗(yàn)證輸入數(shù)據(jù)的合法性等;通過(guò)驗(yàn)證后再與服務(wù)器交互,最后將處理的請(qǐng)求結(jié)果返回給瀏覽器端。 //收信人名稱 private String sendname。 } if (!check(receivename)) { return ERROR。 Transaction tx = ()。 所以 要在項(xiàng)目中 添加 Struts2 的應(yīng)用,需在系統(tǒng)中配置相應(yīng)的 文件: !定義 Struts2 的 StrutsPrepareAndExecuteFilter 的 Filter filter filternamestruts2/filtername filterclass. /filterclass /filter ! StrutsPrepareAndExecuteFilter 用來(lái)初始化 Struts2 并且處理所有的 Web 請(qǐng)求 filtermapping filternamestruts2/filtername urlpattern/*/urlpattern /filtermapping 由于項(xiàng)目系統(tǒng)中前臺(tái)頁(yè)面由 Freemarker 實(shí)現(xiàn),所以還應(yīng)在 中添加一個(gè)作為 引導(dǎo)作用的 action,如下: action name=index class= resultname=success type=freemarker/pages//result /action 信息列表在前臺(tái)顯示的主要代碼如下: p共 ${count?if_exists}條消息 p list myList as Message p 發(fā)件人: ${} br/主題: ${} a href=?messageID=${}顯示 /a br/font color=green 時(shí)間: ${}/font 33 信息科學(xué)與技術(shù)學(xué)院學(xué)士學(xué)位論文 a href=?messageID=${}刪除 /a /list p/ 信息詳細(xì)內(nèi)容在前臺(tái)顯示的主要代碼如下: fieldset legend消息內(nèi)容 /legend labelfont color=green發(fā)件人: /font/label${sendname}p/ labelfont color=green主題: /font/label${theme}p/ labelfont color=green內(nèi)容: /font/label${messagecont} /fieldset 由以 上展示的代碼可知使用 Freemarker 技術(shù)使得前臺(tái)頁(yè)面的編碼非常簡(jiǎn)單,大大的降低了開發(fā)的難度,其他頁(yè)面的顯示與此類似,這里就不再作過(guò)多的展示了。 36 信息科學(xué)與技術(shù)學(xué)院學(xué)士學(xué)位論文 測(cè)試輸出:如圖 64 所示, 65 所示。 輸入: 管理員已正常登陸,并選中刪除用戶。 39 信息科學(xué)與技術(shù)學(xué)院學(xué)士學(xué)位論文 結(jié)束語(yǔ) 在論文開始之初,本人查閱了很多與知識(shí)管理、個(gè)人知識(shí)管理、圖書管理相關(guān)的資料文獻(xiàn),這對(duì)于系統(tǒng)的功能設(shè)計(jì)有很大的幫助。 測(cè)試輸出:如圖 66 所示, 67 所示。 功能描述:用戶登錄系統(tǒng)、退出系統(tǒng) 。 (())。 SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory()。 //信息主題 private String messcont。 本章小結(jié) 本章 主要講述了面向?qū)ο笤O(shè)計(jì)的原則、系統(tǒng)功能模塊的詳細(xì)設(shè)計(jì)、數(shù)據(jù)庫(kù)設(shè)計(jì)、業(yè)務(wù)邏輯層的設(shè)計(jì)和 Web 層的設(shè)計(jì),通過(guò)本章的閱讀相信讀者不但對(duì)面向?qū)ο笤O(shè)計(jì)的原則有所了解,同時(shí),也對(duì)個(gè)人數(shù)字圖書館系統(tǒng)的功能 、系統(tǒng) 整體框架結(jié)構(gòu) 有了清晰的認(rèn)識(shí)。 其中實(shí)現(xiàn)與數(shù)據(jù)庫(kù)交互的文件是 ,其他實(shí)體類都要在此類中配置相對(duì)應(yīng)的映射路徑,如: mapping resource=/model/ / mapping resource=/model/ / mapping resource=/model/ / 23 信息科學(xué)與技術(shù)學(xué)院學(xué)士學(xué)位論文 圖 46 Hibernate 中實(shí)體類的設(shè)計(jì) mapping resource=/model/ / mapping resource=/model/ / mapping resource=/model/ / mapping resource=/model/ / 其中實(shí)體類的設(shè)計(jì)都是定義了數(shù)據(jù)類型和對(duì)應(yīng)的 get、 set方法,這樣就提高了實(shí)體類的可復(fù)用性。 空間 : 每個(gè)注冊(cè)用戶系統(tǒng)都分配了 1GB 容量的空間。 ( 4) 依賴倒轉(zhuǎn)原則:要針對(duì)抽象層編程,而不要針對(duì)具體類編程。 本章小結(jié) 本章主要對(duì)系統(tǒng)的功能性需求進(jìn)行詳細(xì)的分析和獲取, 到 此, 個(gè)人數(shù)字圖書館系統(tǒng) 所應(yīng)該有 的功能已清晰地呈現(xiàn)出來(lái) 。 現(xiàn)在已經(jīng) 明確了系統(tǒng)參與者的具體功能,下面就可以對(duì)其功能進(jìn)行細(xì)致的分析 和實(shí)現(xiàn)。 系統(tǒng)總體結(jié)構(gòu)概述 此次開發(fā)的主要目標(biāo) 是 構(gòu)建一個(gè)屬于個(gè)人的知識(shí)管理 工具 —— 個(gè)人數(shù)字圖書館 ,此 個(gè)人數(shù)字圖書館 的主要功能是在線注冊(cè)過(guò)的用戶 都 能夠通過(guò)此平臺(tái)最終達(dá)到個(gè)人知識(shí)的組織和管理并能和 該平臺(tái)上 和 的其他注冊(cè)用戶 交流和共享資料的 目的。 Query 和 Criteria 接口負(fù)責(zé)執(zhí)行各種數(shù)據(jù)庫(kù)查詢。 Hibernate 可以應(yīng)用在任何使用 JDBC 的場(chǎng)合,既可以在 Java 的客戶端程序使用,也可以在 Servlet/JSP 的 Web 應(yīng)用中使用,最具革命意義的是,Hibernate 可以在應(yīng)用 EJB的 JAVA EE架構(gòu)中取代 CMP 完成數(shù)據(jù)持久化的重任。 Struts 2 與 Struts 1 相比,確實(shí)有很多革命性的改進(jìn),但它并不是新發(fā)布的新框架,而是在另一個(gè) 家喻戶曉的 框架 —— WebWork 基礎(chǔ)上發(fā)展起來(lái)的。 MVC 設(shè)計(jì)思想 是 把一個(gè)應(yīng)用的輸入、處理、輸出流程按照 Model、 View、Controller 的方式進(jìn)行分離,這樣一個(gè)應(yīng)用被分成三個(gè)層 —— 模型層、視圖層、控制層。 UML 展現(xiàn)了一系列最佳工程實(shí)踐,這些最佳實(shí)踐在對(duì)大規(guī)模,復(fù)雜系統(tǒng)進(jìn)行建模方面,特別是在軟件架構(gòu)層次已經(jīng)被驗(yàn)證有效 [7]。 2 信息科學(xué)與技術(shù)學(xué)院學(xué)士學(xué)位論文 國(guó)內(nèi)研究狀況 大連交通大學(xué)圖書館孔繁勝等作者認(rèn)為現(xiàn)有觀念中,個(gè)人圖書館建設(shè)要么是個(gè)人的 行為,要么是某個(gè)機(jī)構(gòu)提供一個(gè)平臺(tái),為資源建設(shè)服務(wù),最后形成私有財(cái)產(chǎn),沒有形成在個(gè)人資源建設(shè)的同時(shí)提供資源的共享、知識(shí)的互動(dòng)、思想的交流,也就是沒有進(jìn)行知識(shí)的再增值 [4]。 前臺(tái) 供注冊(cè) 用戶 使用 ,每個(gè)注冊(cè)用戶都有一個(gè) 屬于 個(gè)人 的數(shù)字圖書館