【正文】
屬性如 下: private int messageID。 //信息主題 private String messcont。 //信息主題 private String messcont。 } if ((null)) { 30 信息科學(xué)與技術(shù)學(xué)院學(xué)士學(xué)位論文 (theme_null, 主題不能為空 !)。 } if (()255) { (messcont_big, 信件內(nèi)容太長了?? )。 //實(shí)現(xiàn)發(fā)送信息的 方法 (SendSuccess, 信息發(fā)送成功! )。 SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory()。 if (!().hasNext()) { (receivename_error, 此用戶不存在! )。 } public void Inster() { //實(shí)現(xiàn)發(fā)送信息的方法 SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory()。 HttpSession sess = ()。 (())。 (message)。 } } 其他功能模塊的實(shí)現(xiàn)與信息發(fā)送功能的實(shí)現(xiàn)類似,在這里就不再作展示了。 34 信息科學(xué)與技術(shù)學(xué)院學(xué)士學(xué)位論文 6 個人數(shù)字圖書館功能測試 軟件測試大體的分為黑盒測試和白盒測試,其中功能測試屬于黑盒測試的范疇,它是通過測試來檢驗(yàn)系統(tǒng)的每一個功能是否都可以正常的使用,功能測試還是系統(tǒng)測試的一部分,系統(tǒng)測試是項(xiàng)目開發(fā)過程的最后階段 [14]。 功能描述:用戶登錄系統(tǒng)、退出系統(tǒng) 。 發(fā)現(xiàn)問題:無 。 輸入:選擇需要上傳或下載的資料 。 圖 64 上傳資料頁面 圖 65 下載資料頁面 37 信息科學(xué)與技術(shù)學(xué)院學(xué)士學(xué)位論文 ( 3) 測試用例 3: 功能名稱: 發(fā)送信息。 測試輸出:如圖 66 所示, 67 所示。 輸入: 管理員已正常登陸,并選中刪除資料。 ( 2) 測試用例 2: 功能名稱: 刪除用戶。 測試輸出: 檢查數(shù)據(jù)庫表和服務(wù)器中 保存文件的位置知道與此用戶相關(guān)的所有資料已不存在。 39 信息科學(xué)與技術(shù)學(xué)院學(xué)士學(xué)位論文 結(jié)束語 在論文開始之初,本人查閱了很多與知識管理、個人知識管理、圖書管理相關(guān)的資料文獻(xiàn),這對于系統(tǒng)的功能設(shè)計有很大的幫助。 當(dāng)然,無論個人數(shù)字圖書館的功能多么齊全多么強(qiáng)大,操作多么便捷,如果使用者不能夠堅持實(shí)施執(zhí)行,那么個人數(shù)字圖書館也只是個擺設(shè),個。 由于受時間和本人能力的限制,本論文和系統(tǒng)都有很多不足之處,如已實(shí)現(xiàn)的功能還很脆弱,且在安全性、界面友好性等方面都存在著需要改進(jìn)和提高的地方。 本章小結(jié) 本章對 個人數(shù)字圖書館 系統(tǒng)的各個 模塊功能 進(jìn)行測試, 從測試結(jié)果可知,系統(tǒng)中各個模塊的功能都能夠正常的運(yùn)行。 輸入: 管理員已正常登陸,并選中刪除用戶。 測試輸出: 檢查數(shù)據(jù)庫表和服務(wù)器中保存文件的位置知道文件已不存在。 圖 66 發(fā)送信息 頁面 圖 67 接收信息 頁面 38 信息科學(xué)與技術(shù)學(xué)院學(xué)士學(xué)位論文 系統(tǒng)后臺功能測試 ( 1) 測試用例 1: 功能名稱: 刪除用戶資料。 輸入: 收件人名、信息主題、信息內(nèi)容。 36 信息科學(xué)與技術(shù)學(xué)院學(xué)士學(xué)位論文 測試輸出:如圖 64 所示, 65 所示。 35 信息科學(xué)與技術(shù)學(xué)院學(xué)士學(xué)位論文 圖 62 個人主頁 圖 63 用戶退出系統(tǒng)頁面 ( 2) 測試用例 2: 功能名稱: 上傳下載 。 正常輸出:登錄成功后輸出個人主頁,退出成功后輸出感謝頁面。本章主要對前臺和后臺進(jìn)行功能測試。 所以 要在項(xiàng)目中 添加 Struts2 的應(yīng)用,需在系統(tǒng)中配置相應(yīng)的 文件: !定義 Struts2 的 StrutsPrepareAndExecuteFilter 的 Filter filter filternamestruts2/filtername filterclass. /filterclass /filter ! StrutsPrepareAndExecuteFilter 用來初始化 Struts2 并且處理所有的 Web 請求 filtermapping filternamestruts2/filtername urlpattern/*/urlpattern /filtermapping 由于項(xiàng)目系統(tǒng)中前臺頁面由 Freemarker 實(shí)現(xiàn),所以還應(yīng)在 中添加一個作為 引導(dǎo)作用的 action,如下: action name=index class= resultname=success type=freemarker/pages//result /action 信息列表在前臺顯示的主要代碼如下: p共 ${count?if_exists}條消息 p list myList as Message p 發(fā)件人: ${} br/主題: ${} a href=?messageID=${}顯示 /a br/font color=green 時間: ${}/font 33 信息科學(xué)與技術(shù)學(xué)院學(xué)士學(xué)位論文 a href=?messageID=${}刪除 /a /list p/ 信息詳細(xì)內(nè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ù)使得前臺頁面的編碼非常簡單,大大的降低了開發(fā)的難度,其他頁面的顯示與此類似,這里就不再作過多的展示了。 ()。 (messcont)。 Message message = new Message()。 Transaction tx = ()。 return false。 Transaction tx = ()。 } public boolean check(String receivename) { String sql = from User where username=39。 } if (!check(receivename)) { return ERROR。 } if ((null)) { (messcont_null, 發(fā)送內(nèi)容不能為空! )。 if ((null)) { (receivename_null, 收件人不能為空! )。 //信息的發(fā)送時間 其中 實(shí)現(xiàn)發(fā)送功能的 Action 為 : 其核心代碼如下: public class MessSendAction extends ActionSupport{ private String receivename。 //收信人名稱 private String sendname。characterEncoding=GB2312 /property property name=root/property property name=2947114/property ! 數(shù)據(jù)庫方言配置 property name=dialect /property ! 控制臺打印 Hibenate 持久化操作生成的 SQL 語句 28 信息科學(xué)與技術(shù)學(xué)院學(xué)士學(xué)位論文 property name=show_sqltrue/property ! Hibernate 將 Session 綁定到當(dāng)前線程,事務(wù)結(jié)束后, Hibernate 將 Session 從當(dāng)前線程中釋放,并且關(guān)閉 Session property name=current_session_context_classthread /property ! 全部映射文件 mapping resource=/model// ????????????? .其他實(shí)體類映射省略 mapping resource=/model// /sessionfactory Struts 的配置文件 中的主要配置如下: ! 將開發(fā)模式的值設(shè)為: true,便于后期開發(fā) constant name= value=true / ! 一次上傳的最大容量為 1G constant name= value=1073741824 / ! namespace 的配置將頁面所在文件夾置為其值 package name=default namespace=/pages extends=strutsdefault ! 上傳文件 action name=doUp class= ! 文件上傳必需包含的兩個攔截器棧 interceptorref name=fileUpload /interceptorref interceptorref name=defaultStack/ result name=success type=freemarker/pages//result result name=input type=freemarker/pages//result /action 其他 action 的配置類似在此不再展示, 到此, 完成了前期開發(fā)環(huán)境的部署。 系統(tǒng)開發(fā)環(huán)境與技術(shù) 本 系統(tǒng) 開發(fā)模式為 瀏覽器 /服務(wù)器 B/S(Browser/Server)架構(gòu)模式, 采用主流框架SSH 中的 Struts2 和 Hibernate, Tomcat 為服務(wù)器支持, 客戶端運(yùn)行環(huán)境為Windows/20xx/XP+ 以上版本, 采 用 Freemarker 實(shí)現(xiàn)前臺頁面的顯示 , MYSQL做后臺數(shù)據(jù)庫 , Myeclipse IDE 作為開發(fā)工具 。 26 信息科學(xué)與技術(shù)學(xué)院學(xué)士學(xué)位論文 圖 410 Struts 2 處理過程 結(jié)合上圖說明 Struts2 的大致處理流程為客戶端初始化一個指向 Servlet 容器,本系統(tǒng)是指 Tomcat容器,這個請求經(jīng)過一系列的過濾器 Filters接著調(diào)用 FilterDispatcher詢問 ActionMapper 來決定是否需要調(diào)用某個功能 Action 來處理請求,在調(diào)用此Action 的前后還涉及到調(diào)用相關(guān)的攔截器 Intercepter,當(dāng) Action 執(zhí)行完畢后,ActionInvocation 會根據(jù)系統(tǒng)中 配置文件找到對應(yīng)的返回結(jié)果。 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è)計 Web 層可以形象的描述為一個傳遞者、中間者的角色, 它在系統(tǒng)中的任務(wù)是簡單的處理瀏覽器端的請求,如驗(yàn)證輸入數(shù)據(jù)的合法性等;通過驗(yàn)證后再與服務(wù)