【正文】
基于 JSP 技術(shù)的圖書(shū)館管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn) JSP technologybased library management system Design and Implementation II 基于 JSP 技術(shù)的圖書(shū)館管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn) 摘要 隨著圖書(shū)數(shù)量的不斷增長(zhǎng) ,圖書(shū)類(lèi)別的日異更新,圖書(shū)館的管理技術(shù)也越來(lái)越受到人們的關(guān)注。為了迎合圖書(shū)管理者的需求,我制作了一個(gè)基于 JSP 技術(shù)的小型圖書(shū)館管理系統(tǒng),為每一本,每一類(lèi)圖書(shū)分別編碼,實(shí)現(xiàn)了圖書(shū)信息的增加,刪除,修改,查詢(xún),外借,歸還等基本功能 ,可以很方便地查詢(xún),更新圖書(shū)館的各種信息,更加快速地為客戶(hù)服務(wù)。這是一個(gè)現(xiàn)代化的,人性化的,高效化的系統(tǒng),無(wú) 論是圖書(shū)管理人員,還是圖書(shū)借閱者都可以充分滿(mǎn)足需要。計(jì)算機(jī)信息化管理有著儲(chǔ)存信息量大,速度快等許多優(yōu)點(diǎn),提供給我們的處理信息及時(shí)快捷,同時(shí)也提高了我們工作人員的自身素質(zhì)。用 戶(hù)已經(jīng)習(xí)慣性地在網(wǎng)上進(jìn)行圖書(shū)的瀏覽和查閱,然后選擇自己喜歡的圖書(shū)進(jìn)行訂閱和借閱,這種可視化的界面方便用戶(hù)快捷地檢索到相關(guān)信息。如何創(chuàng)建高效的網(wǎng)絡(luò)數(shù)據(jù)庫(kù),如何讓頁(yè)面和數(shù)據(jù)庫(kù)能很好地進(jìn)行交流,就成了一個(gè)關(guān)鍵性的問(wèn)題。業(yè)務(wù)流程的處理過(guò)程對(duì)其它層來(lái)說(shuō)是黑箱操作,模型接受視圖請(qǐng)求的數(shù)據(jù),并返回最終的處理結(jié)果 , 業(yè)務(wù)模型的設(shè)計(jì)可以說(shuō)是 MVC最主要的核心 ; 控制 (Controller)可以理解為從用戶(hù)接收請(qǐng)求 , 將模型與視圖匹配在一起,共同完成用戶(hù)的請(qǐng)求。只要 Controller改變了 Models的數(shù)據(jù)或者屬性,所有依賴(lài)的 View都會(huì)自動(dòng)更新。在 Struts框架中 Controller功能由 ActionServlet和 ActionMapping對(duì)象構(gòu)成,核心是一個(gè) Servlet類(lèi)型的對(duì)象 ActionServlet,它用來(lái)接受客戶(hù)端的請(qǐng)求。 至于實(shí)現(xiàn)的細(xì)節(jié),在后續(xù)章節(jié)中會(huì)有介紹。網(wǎng)頁(yè)還能通過(guò) tags和 scriptlets訪問(wèn)存 在于服務(wù)端的資源的應(yīng)用邏輯。 JSP 的內(nèi)置對(duì)象 JSP 有九大內(nèi)置對(duì)象,也叫隱含對(duì)象,是不需要用戶(hù)預(yù)先定義就可以拿過(guò)來(lái)用的對(duì)象。作用是 對(duì)客戶(hù)的請(qǐng)求做出動(dòng)態(tài)的響應(yīng),向客戶(hù)端發(fā)送數(shù)據(jù)。 4. Application 對(duì)象 代碼片段的運(yùn)行環(huán)境 。它 用來(lái)向客戶(hù)端輸出數(shù)據(jù) 。 2 8. page 對(duì)象 JSP 網(wǎng)頁(yè)本身 ,指的是當(dāng)前頁(yè)面。 Jsp 可以在 Serverlet和 JavaBean的支持下,完成功能強(qiáng)大的站點(diǎn)程序。生成內(nèi)容的邏輯被封裝在標(biāo)識(shí) JavaBeans 組件中,并且捆綁在小腳本中,所有的腳本在服務(wù)器端運(yùn)行。 2.強(qiáng)調(diào)可重用的組件 絕大多數(shù) JSP頁(yè)面依賴(lài)于可重用的,跨平臺(tái)的組件( JavaBeans或者 Enterprise JavaBea nsTM組件)來(lái)執(zhí)行應(yīng)用程序所要求的更為復(fù)雜的處理。 JavaServer Page技術(shù)封裝了許多功能,這些功能是在易用的、與 JSP相關(guān)的 XML標(biāo)識(shí)中進(jìn)行動(dòng)態(tài)內(nèi)容生成所需要的。 由于 JSP 頁(yè)面的內(nèi)置腳本語(yǔ)言是基于 Java 編程語(yǔ)言的,而且所有的 JSP 頁(yè)面都被編譯成為Java Servlet, JSP頁(yè)面就具有 Java技術(shù)的所有好處,包括健壯的存儲(chǔ)管理和安全性。它們不需要實(shí)現(xiàn)任何不可思議的接口以便能夠持續(xù)存在。要修改這些對(duì)象,(一般情況下)只需在程序中與它們進(jìn)行交互,然后 告訴 Hibernate保存修改即可。 Apache Struts 2即是之前大家所熟知的 WebWork 2.在經(jīng)歷了幾年的各自發(fā)展后, WebWork和 Struts社區(qū)決定合二為一,也即是 Struts 2. Struts2 相對(duì)于 struts1 是一個(gè)全新的框架,但它并不是新發(fā)布的新框架,而是在 WebWork基礎(chǔ)上發(fā)展起來(lái)的。 Struts1的一個(gè)普遍問(wèn)題是使用抽象類(lèi)編程而不是 接口。 Struts1 Action 是單例模式并且必須是線程安全的,因?yàn)?僅有 Action 的一個(gè)實(shí)例來(lái)處理所有的請(qǐng)求。 依賴(lài) Struts1 Action 依賴(lài)于 Servlet API ,因?yàn)楫?dāng)一個(gè) Action 被調(diào)用時(shí) HttpServletRequest 和 HttpServletResponse 被傳遞給 execute方法。 Struts 2 使用 ValueStack技術(shù),使 taglib能夠訪問(wèn)值而不需要把你的頁(yè)面( view)和對(duì)象綁定起來(lái)。每個(gè)類(lèi)一個(gè)轉(zhuǎn)換器,對(duì)每一個(gè)實(shí)例來(lái)說(shuō)是不可配置的。 Struts開(kāi)放源碼框架的創(chuàng)建是為了使開(kāi)發(fā)者在構(gòu)建基于 Java Servlet和 JavaServer Pages( JSP)技術(shù)的 Web應(yīng)用時(shí)更加容易。 3. 強(qiáng)大的攔截器 Struts2的攔截器是一個(gè) Action級(jí)別的 AOP, Struts2中的許多特性都是通過(guò)攔截器來(lái)實(shí)現(xiàn)的,例如異常處理,文件上傳,驗(yàn)證等。 5. 易于擴(kuò)展的插件機(jī)制 在 Struts2添加擴(kuò)展是一件愉快而輕松的事情,只需要將所需要的 Jar包放到WEBINF/lib文件夾中,在 。因此建立一個(gè)良好的數(shù)據(jù)組織結(jié)構(gòu)和選擇一個(gè)性能較優(yōu)的數(shù)據(jù)庫(kù),使整個(gè)系統(tǒng)可以迅速、方便、準(zhǔn)確地調(diào)用和管理所需要的數(shù)據(jù),是直接關(guān)系到系統(tǒng)的效率和性能的。它提供多種功能,可使多個(gè)應(yīng)用程序和用戶(hù)用不同的方法在同時(shí)或不同時(shí)刻去建立,修改和詢(xún)問(wèn)數(shù)據(jù)庫(kù)。系統(tǒng)用戶(hù)可以對(duì)這些文件執(zhí)行插入數(shù)據(jù)、檢索數(shù)據(jù)、更改數(shù)據(jù)、刪除數(shù)據(jù)等操作。由于它們是相分離的,所以在管理數(shù)據(jù)的物理存儲(chǔ)結(jié)構(gòu)時(shí)并不會(huì)影響對(duì)邏輯存儲(chǔ)結(jié)構(gòu)的存取。它具有場(chǎng)地自治性( Site Autonomy)和提供數(shù)據(jù)存儲(chǔ)透明機(jī)制,以此可實(shí)現(xiàn)數(shù)據(jù)存儲(chǔ)透明性。 2. 提供了基于角色 (ROLE)分工的安全保密管理。加上它有許多優(yōu)秀的前臺(tái)開(kāi)發(fā)工具如 POWER BUILD、 SQL*FORMS、 VISIA BASIC 等,可以快速開(kāi)發(fā)生成基于客戶(hù)端 PC 平臺(tái)的應(yīng)用程序,并具有良好的移植性。 如果不知道問(wèn)題是什么就試圖解決問(wèn)題, 這種做法 顯然是盲目的,只會(huì)白白浪費(fèi)時(shí)間和金錢(qián),最終得出的結(jié)果很可能是 8 毫無(wú)意義的。 可行性分析 可行性分析是在對(duì)當(dāng)前系統(tǒng)有了初步了解的基礎(chǔ)上完成的,主要從技術(shù)特點(diǎn)、經(jīng)濟(jì)條件和社會(huì)效益三個(gè)方面分析討論開(kāi)發(fā)系統(tǒng)的可行性。用戶(hù)只需要提供幾臺(tái)電腦,聘用幾個(gè)管理人員就可以滿(mǎn)足要求。由于需求分析階段是其后的總體設(shè)計(jì)、詳細(xì)設(shè)計(jì)的基礎(chǔ) , 也是系統(tǒng)模型的最初形成階段 , 可以說(shuō) , 它決定了整個(gè)系統(tǒng)設(shè)計(jì)的走向。 功能分 析 圖書(shū)館管理系統(tǒng)需要滿(mǎn)足兩方面的要求,一個(gè)是圖書(shū)館管理員,一個(gè)是圖書(shū)借閱者。這樣每個(gè)借閱者都只能查看自己的個(gè)人信息,不但滿(mǎn)足了圖書(shū)借閱者的要求,還保護(hù)了圖書(shū)借閱者的個(gè)人隱私。每個(gè)模塊又分為不同的子模塊,既相互獨(dú)立,又具有一定的聯(lián)系。讀者可以從不同的角度查詢(xún)圖書(shū)的詳細(xì)資料,包括圖書(shū)的名稱(chēng), ISBN,類(lèi)別,版次,作者,出版社,出版日期等。 圖書(shū)借閱模塊主要實(shí)現(xiàn)讀者對(duì)圖書(shū)的借書(shū),還書(shū),查看借閱記錄和逾期記錄等功能。 用戶(hù)服務(wù)模塊主要是針對(duì)讀者的,通過(guò)該模塊,讀者可以了解圖書(shū)館的規(guī)章制度,新聞動(dòng)態(tài),以及開(kāi)館時(shí)間等。 數(shù)據(jù)庫(kù)總體類(lèi)圖 類(lèi)的概念是面向?qū)ο筌浖_(kāi)發(fā)的關(guān)鍵。 1 讀者借閱管理 活動(dòng)圖 16 管理員登陸驗(yàn)證登陸到讀者借閱模塊等待讀者的借書(shū)請(qǐng)求等待讀者的還書(shū)請(qǐng)求處理讀者的借書(shū)請(qǐng)求處理讀者的還書(shū)請(qǐng)求 17 管 理 員 登 陸 驗(yàn) 證登 陸 到 圖 書(shū) 信 息 維 護(hù) 模 塊添 加 圖 書(shū) 信 息刪 除 圖 書(shū) 信 息修 改 圖 書(shū) 信 息 3 讀者信息管理活動(dòng)圖 18 管 理 員 登 陸 驗(yàn) 證登 陸 到 讀 者 信 息 維 護(hù) 模 塊添 加 讀 者刪 除 讀 者修 改 讀 者輸 入 讀 者 信 息開(kāi) 設(shè) 讀 者 賬 戶(hù)賬 戶(hù) 給 讀 者 刪 除 讀 者 信 息督 促 讀 者 歸 還 欠 款 欠 書(shū)修 改 讀 者 信 息 圖書(shū)管理員的狀態(tài)圖 狀態(tài)圖實(shí)際上是一種由狀態(tài)、變遷、事件和活動(dòng)組成的狀態(tài)機(jī)。 塊時(shí) 序圖 M a n a g e rM a n a g e r S e r v i c eR e a d e rR e a d e r S e r v i c e1 . 身 份 驗(yàn) 證 ( )2 . 返 回 驗(yàn) 證 消 息B o o k S e r v i c e3 . 發(fā) 出 借 書(shū) 或 歸 還 請(qǐng) 求4 . 掃 描 R e a d e r I d ( )5 . 返 回 在 讀 者 信 息5 . 記 錄 讀 者 信 息6 . 掃 描 圖 書(shū) I D ( )7 . 返 回 圖 書(shū) 信 息9 . 標(biāo) 記 該 書(shū) 借 出 或 歸 還8 . 借 閱 成 功1 0 . 把 書(shū) 給 讀 者 ( 借 書(shū) 時(shí) )1 1 . 把 書(shū) 交 還 給 管 理 員 ( 還 書(shū) 時(shí) ) 20 (讀者)的時(shí)序 圖 M a n a g e r M a n a g e r S e r v i c eB o o k S e r v i c e ( R e a d e r S e r v i c e )B o o k ( R e a d e r )1 . 身 份 驗(yàn) 證 ( )2 . 返 回 驗(yàn) 證 消 息3 . 向 數(shù) 據(jù) 庫(kù) 添 加 新 圖 書(shū) ( 讀 者 )4 . 向 數(shù) 據(jù) 庫(kù) 添 加 新 圖 書(shū) ( 讀 者 )5 . 添 加 成 功7 添 加 圖 書(shū) ( 讀 者 ) 成 功6 . 更 新 數(shù) 據(jù) 庫(kù) (讀者 )的時(shí)序圖 21 M a n a g e r M a n a g e r S e r v i c eB o o k S e r v i c e ( R e a d e r S e r v i c e ) B o o k ( R e a d e r )1 . 身 份 驗(yàn) 證 ( )2 . 返 回 驗(yàn) 證 消 息3 . 刪 除 圖 書(shū) ( 讀 者 ) 信 息4 . 刪 除 圖 書(shū) ( 讀 者 ) 資 料5 刪 除 成 功6 、 更 新 數(shù) 據(jù) 庫(kù)7 . 刪 除 成 功 前臺(tái)讀者登陸模塊具體設(shè)計(jì) 用例圖 用例是從用戶(hù)的角度對(duì)系統(tǒng)行為的一個(gè)描述。 cellspacing=10px cellpadding=10px caption管理員登錄 /caption tr td管理員: /tdtdinput type=text name= //td/tr trtd密 碼: /tdtd input type=password name=//td/tr trtd/tdtdinput type=submit value=提交 / input type=reset value=重置 / 26 /td/tr /table /div /div /form /body /html 管理員書(shū)刊管理 模塊頁(yè)面 右面顯示的是所有圖書(shū)的信息,用了分頁(yè)技術(shù),每頁(yè)顯示 6 條記錄。但是要做好管理系統(tǒng),并不是我們想象的寫(xiě)程序那么簡(jiǎn)單,它包括了編寫(xiě)程序、數(shù)據(jù)庫(kù)設(shè)計(jì)、網(wǎng)頁(yè)制作、圖象處理、版面設(shè)計(jì) 、服務(wù)器管理等等,要搞好一個(gè)好的,完善的網(wǎng)站需要一個(gè)詳細(xì)的、合理的、可行性的規(guī)劃設(shè)計(jì)。 31 參考文獻(xiàn): [1] Jesse Zhao. Div + CSS 布局大全 . 電子工業(yè)出版社 , 1999 [2] 李剛 . Struts 2 權(quán)威指南 . 電子工業(yè)出版社 , 2021 [3] 雋青龍、 王華容 .Jsp+Oracle 動(dòng)態(tài)網(wǎng)站開(kāi)發(fā) .清華大學(xué) 出版社, 2021 [4] 周桓、王殊宇 .JSP 項(xiàng)目開(kāi)發(fā)全程實(shí)錄 .清華大學(xué) 出版社, 2021 [5] (美 )格雷恩著 賀師俊 譯 .Ajax實(shí)戰(zhàn)實(shí)例詳解 .人民郵電 出版社, 2021 [6] 張海藩 .軟件工程 . 北京 :清華大學(xué)出版社, 1998 [7](美) Danny Ayers、 John Bell、 Carl Java Data. 電子工業(yè)出版社 2021 [8](美) Raghn Ramakrishna、 Johannes Gehrke. Database Management Systems. Companies, Inc, 1998