個人文件管理系統(tǒng)的設(shè)計與實現(xiàn)_第1頁
個人文件管理系統(tǒng)的設(shè)計與實現(xiàn)_第2頁
個人文件管理系統(tǒng)的設(shè)計與實現(xiàn)_第3頁
個人文件管理系統(tǒng)的設(shè)計與實現(xiàn)_第4頁
個人文件管理系統(tǒng)的設(shè)計與實現(xiàn)_第5頁
已閱讀5頁,還剩25頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、陜西理工大學(xué)數(shù)學(xué)與計算機科學(xué)學(xué)院實訓(xùn)報告1 實訓(xùn)報告題 目 個人文件管理系統(tǒng)個人文件管理系統(tǒng)_ 工程組成員 韓建、王冬妮、李婧、高育坤、宋航 所在院(系) 數(shù)學(xué)與計算機科學(xué)學(xué)院數(shù)學(xué)與計算機科學(xué)學(xué)院 專業(yè)班級 信計信計 13021302 班班 指導(dǎo)教師 趙暉 完成地點 數(shù)計學(xué)院實訓(xùn)室數(shù)計學(xué)院實訓(xùn)室 word.個人文件管理系統(tǒng)個人文件管理系統(tǒng)摘要摘要: : 隨著 、平板等手持終端訪問設(shè)備的普及,越來越多的用戶希望通過網(wǎng)絡(luò)平臺進行管理文件,能更好的保存文件,及時的瀏覽和查找文件,而通過個人文件管理是一個更具有保密的方式。本課題是建立一個保密及時的管理文件系統(tǒng),方便更好的保存文件,可以隨時隨地的訪問和

2、查看文件和增加文件,及刪除不用的文件。這給我們帶來了許多的便利。系統(tǒng)使用 Java + JSP + Servlet + MySQL 技術(shù)實現(xiàn)。本系統(tǒng)主要功能包括用戶登錄、用戶注冊、文件上傳和文件管理。它具有檢索迅速、查找方便、可靠性高、存儲量大和本錢低等優(yōu)點。關(guān)鍵詞關(guān)鍵詞: : 個人文件管理,B/S 模式,Web 應(yīng)用,java,servletword.目目 錄錄1 系統(tǒng)開發(fā)概述.11.1系統(tǒng)開發(fā)的背景.1 11.2 系統(tǒng)開發(fā)目的和意義 .11.3 系統(tǒng)設(shè)計指導(dǎo)思想 .12 系統(tǒng)需求論述 .23 系統(tǒng)分析與設(shè)計 .43.1 系統(tǒng)的總體分析 .43.2 分析類的獲取 .53.3 系統(tǒng)關(guān)鍵抽象概念

3、的獲取與分析 .63.4 分析類交互 .64 系統(tǒng)設(shè)計 .64.1 系統(tǒng)運行平臺的設(shè)計選擇 .74.2 系統(tǒng)數(shù)據(jù)庫的結(jié)構(gòu)設(shè)計 .74.3 數(shù)據(jù)庫操作的設(shè)計 .74.4 用戶界面設(shè)計 .85 系統(tǒng)實現(xiàn) .11 注冊登錄的實現(xiàn) .16 上傳文件的實現(xiàn) .18 搜索文件的實現(xiàn) .18 分類瀏覽的實現(xiàn) .20 刪除下載的實現(xiàn) .216 軟件測試與調(diào)試 .236.1 軟件測試的必要性 .236.2 調(diào)試 .23結(jié) 論 .25參考文獻 .26致 謝 .27陜西理工大學(xué)數(shù)學(xué)與計算機科學(xué)學(xué)院實訓(xùn)報告11 1 緒論緒論1.11.1 系統(tǒng)開發(fā)的系統(tǒng)開發(fā)的背景背景去年某知名生產(chǎn)企業(yè)在生產(chǎn)產(chǎn)品時,誤用了舊版生產(chǎn)設(shè)計稿

4、件,發(fā)現(xiàn)后生產(chǎn)成品已經(jīng)過全國各地的經(jīng)銷商流入市場,之后在產(chǎn)品使用中出現(xiàn)了嚴重的質(zhì)量問題,此次賠損的經(jīng)濟補償與浪費的生產(chǎn)原料金額高達數(shù)十億,不僅如此,公司信譽還蒙受損失,嚴重影響到了今后的經(jīng)濟效益,其間接損失不可估量。追根溯源,造成這樣嚴重經(jīng)濟損失的根本原因,是文檔管理工作沒有做好。文檔往往在更新內(nèi)容后沒有及時通知其它使用人員新版本文件的發(fā)布,而導(dǎo)致仍有大多數(shù)人在使用舊版本。一些重要的企業(yè)文檔如:合同、報價單、方案等,經(jīng)常出現(xiàn)版本混亂的情況:合作時簽了舊版合同、生產(chǎn)時使用了舊版的設(shè)計資料、銷售時提供錯誤的報價單等情況不僅使企業(yè)信譽蒙受損失,還會給企業(yè)帶來幾十萬甚至上百億的巨大經(jīng)濟損失!而且隨著

5、、平板等手持終端訪問設(shè)備的普及,普適計算機越來越滲入人們的生活。跟隨開展的就是個性化效勞,如網(wǎng)絡(luò)發(fā)布、簽名、預(yù)約等都被極大地賦予了個人特色,越來越多的用戶希望通過網(wǎng)絡(luò)平臺進行管理文件,能更好的保存文件,及時的瀏覽和查找文件。很多人對發(fā)生在自己身邊的事以及對生活的一些感悟愿意用文字或圖片的方式記錄下來發(fā)到網(wǎng)絡(luò)上保存起來,其中通過個人文件管理發(fā)布是一個使用頻率較高的方式。本課題擬建立一個文件管理的系統(tǒng),方便廣闊人民更好的管理好自己的文件,可以將個人生活經(jīng)驗或?qū)W習(xí)筆記心得等發(fā)布到系統(tǒng)中,方便自己隨時查看。1.21.2 系統(tǒng)開發(fā)的目的和意義系統(tǒng)開發(fā)的目的和意義 文檔管理對于每個企業(yè)來講都有著舉足輕重的

6、地位,版本控制和文檔修訂留痕是在文檔管理中很重要的組成局部。然而企業(yè)該如何優(yōu)化現(xiàn)有的版本管理手段呢你可以使用個人文檔管理,這些版本問題不再是問題!1.31.3 系統(tǒng)設(shè)計指導(dǎo)思想系統(tǒng)設(shè)計指導(dǎo)思想由于系統(tǒng)需要具有普適的特性,因此建立以 Web 效勞為中心的系統(tǒng)是最優(yōu)的架構(gòu)。使用傳統(tǒng)的 B/S 架構(gòu)能接納多種終端設(shè)備的訪問,如使用筆記本電腦、臺式計算機、 、平板電腦等設(shè)備。其中以學(xué)生使用的實際情況看,PC 終端和 終端將是訪問的主要設(shè)備,因此在系統(tǒng)架構(gòu)上必須容納傳統(tǒng)的瀏覽器訪問和 終端訪問方式。結(jié)合實際的需要,技術(shù)實現(xiàn)上將以普通 Web 的方式實現(xiàn)系統(tǒng)功能的訪問,可以統(tǒng)一到 Web 效勞器中一起管理

7、2,3。word.另外,從用戶操作的角度出發(fā),使用系統(tǒng)應(yīng)該感受到較好的便捷性,即通常所說的系統(tǒng)設(shè)計以人為本的思想。綜合考慮,對系統(tǒng)設(shè)計提出如下幾點要求:1.便捷性:系統(tǒng)以便捷的信息訪問為首要目標,以方便用戶使用為核心原那么,需要充分考慮實際操作的各項細節(jié),支持多種終端接入。這種追求近乎完美的操作體驗正是著名的蘋果公司創(chuàng)始人喬布斯先生所推崇的,當然本系統(tǒng)以這種指導(dǎo)思想為目標,努力做到盡善盡美,最終通過用戶的不斷反應(yīng)將及時調(diào)整,力爭做到方便用戶操作。在不需要查看操作幫助的情況下也能輕松直觀的操作,并對操作流程有清晰的理解。2.實用性:包括系統(tǒng)功能和系統(tǒng)信息呈現(xiàn)以實用為目標,不添加華而不實的部件與功

8、能,既不喪失必要的信息,又能簡單直觀,以傳達信息為核心,對文字記錄和圖片發(fā)布能提供較好的功能封裝。另外通過系統(tǒng)能及時了解多方面多渠道的信息,表達系統(tǒng)的核心價值。3.可靠性:由于多用戶的同時訪問,因此系統(tǒng)要具備可靠的性能處理要求,能支持多用戶并發(fā)訪問和并發(fā)操作。同時所有的用戶數(shù)據(jù)都存放在效勞器上,要求數(shù)據(jù)存取可靠平安,盡量防止喪失用戶創(chuàng)立的資料或數(shù)據(jù)狀態(tài)不一致現(xiàn)象。4.可維護性:針對系統(tǒng)后期的功能調(diào)整或增刪,應(yīng)盡量減少維護的工作量。對用戶來說,對系統(tǒng)中自己的資料的操作也應(yīng)該方便查閱和維護。2 2 系統(tǒng)需求論述系統(tǒng)需求論述根據(jù)前面的分析與定位,本系統(tǒng)主要用于校內(nèi)同學(xué)的使用,因此需求的重點也反映在同

9、學(xué)平時生活中的明顯的和一些潛在的期望。就主要功能來說,核心在于創(chuàng)立自己的文件空間,在文件空間中方便的發(fā)表文件,同時能方便地查閱自己的文件。同時由于潛在的需求期望增加獲取信息的渠道。另外系統(tǒng)提供站內(nèi)信功能,幫助簡化互發(fā)消息的管理,這樣系統(tǒng)能自主控制所有消息,并能保存消息的歷史信息,方便消息維護。這里為了方便表達,特預(yù)先約定幾個使用的名詞術(shù)語確實切含義:個人文件空間:指網(wǎng)上由一到多個頁面組成的、由用戶自己管理上傳的。所有者可以設(shè)置其根本信息和呈現(xiàn)方式,可以在空間中發(fā)布自己的文檔、圖片、音頻、視頻信息。文件:上傳在文件空間的一條信息,可能是文字描述,可能是圖片,也可能是音頻、視頻,也可能是混合形式。

10、一般由文件空間的所有者上傳??臻g顯示的時候一般按照時間由近到遠的順序進行顯示。用戶:指登錄進入系統(tǒng)的一般用戶,可能是普通的注冊用戶,并沒有開通自己的文件空間。這里泛指系統(tǒng)中的正常用戶。綜合上述,得到系統(tǒng)的功能性需求如下列圖。word.系統(tǒng)用戶的用例圖其中各功能性需求簡要說明如下:簡單的系統(tǒng)登入登出及注冊功能在這里不再詳述。用戶角色能操作的功能主要集中于自己的文件空間方面,主要包括:上傳文件管理,查看文檔、圖片、音頻、視頻數(shù)據(jù)列表,關(guān)鍵字管理,文件管理。這幾個模塊的訪問一般是用戶本人才能操作。對系統(tǒng)的非功能性需求方面的要求,主要表達在性能需求和可靠性需求兩個主要方面,下面從這兩個核心的角度加以說

11、明。性能需求:由于屬于 Web 效勞型工程,這必然要求系統(tǒng)能承受大量的同時在線用戶訪問的問題。目前來看,只要系統(tǒng)結(jié)構(gòu)設(shè)計得當,只需要保障硬件平臺的性能需求就能將并發(fā)訪問需求控制在合理的承受范圍。因此雖然訪問量和發(fā)布量大,但相對獨立,運用軟件架構(gòu)可以很好的處理,同時使用應(yīng)用效勞器自身提供的集群特性可以很好地解決壓力承受的性能要求。4,5,6可靠性需求:由于不是重要的支撐平臺,即使系統(tǒng)停機較長時間,也不會帶來太大的損失,但可能會給用戶造成很大的困擾,因此可以將可靠性需求映射到底層的支撐軟件平臺上,如使用 Java 應(yīng)用效勞器和 mySQL 數(shù)據(jù)庫效勞器,其本身較高的可靠性要求可以大體上實現(xiàn)本系統(tǒng)對

12、整體可靠性的要求,同時結(jié)合軟件架構(gòu)內(nèi)合理的輔助型框架應(yīng)該能較好的滿足可靠性要求。4,6word.3 系統(tǒng)分析與設(shè)計系統(tǒng)分析與設(shè)計基于系統(tǒng)的需求,這個章節(jié)主要陳述分析得出系統(tǒng)的分析模型和設(shè)計模型,從邏輯上理解系統(tǒng)的實現(xiàn)方式和操作方式。下面表達中沒有嚴格按分析和設(shè)方案分小節(jié),而是大體按照幾個主題進行了陳述,將分析結(jié)果與設(shè)計結(jié)果大體連貫起來,后續(xù)的章節(jié)將介紹具體的實現(xiàn)。3.1 系統(tǒng)的總體分析系統(tǒng)的總體分析針對 B/S 結(jié)構(gòu)來說,整個系統(tǒng)效勞都集中于效勞器端,對效勞器的架構(gòu)設(shè)計一般使用3 層架構(gòu)或多層架構(gòu),這在 Java 體系結(jié)構(gòu)設(shè)計中非常普遍。本系統(tǒng)使用常見的三層架構(gòu),即界面表示層、業(yè)務(wù)邏輯層、數(shù)據(jù)

13、持久層。整個系統(tǒng)的總體結(jié)構(gòu)系統(tǒng)總體布局如上圖,客戶端如需求所述,可能是 PC 機上的瀏覽器,也可能是基于 的客戶端,通過使用 Web 訪問。如果將 Web 接口包裝成 Web Service 接口,那么可以接入更多類型的訪問設(shè)備。其中表示層的職責主要集中于處理 Web 頁面的數(shù)據(jù)顯示、接收用戶輸入和各類操作,屬于整個系統(tǒng)的最前端,但其中沒有系統(tǒng)的操作邏輯,僅僅包含簡單的頁面交互方面的處理邏輯,一般使用 JavaScript 腳本來生成瀏覽器端的交互邏輯,并使用腳本將輸入數(shù)據(jù)或操作結(jié)果反應(yīng)到后臺業(yè)務(wù)邏輯層。這局部內(nèi)容借鑒了課程 Web 程序設(shè)計 和 Java 高級編程 中的知識,使用了 Drea

14、mweaver,這是一個針對專業(yè)網(wǎng)頁設(shè)計師特別開展的視覺化網(wǎng)頁開發(fā)工具,利用它可以輕而易舉地制作出跨越平臺限制和跨越瀏覽器限制的充滿動感的網(wǎng)頁,這極大地減輕了表示層開發(fā)的工作量。在設(shè)計的過程中,深深體會到了封裝以及基于組件開發(fā)帶來的好處,具體地體會到了 軟件工程 課程中的原來較為抽象的思想。下列圖顯示了整個系統(tǒng)的架構(gòu)圖。word. 系統(tǒng)體系架構(gòu)3.2 分析類的獲取分析類的獲取確定了主要的系統(tǒng)用例,接下來需要得出分析類模型,用于評估整個系統(tǒng),也起到了承接分析與啟下設(shè)計的作用。歸納一下系統(tǒng)的功能,并綜合操作特性,得到如下幾個綜合的操作界面類型:主頁面index.jspindex.jsp:是系統(tǒng)的首

15、頁面,主要呈現(xiàn)登錄模塊、搜索模塊、系統(tǒng)下載模塊、關(guān)于我們等信息。個人主頁面main.jspmain.jsp:用于個人有關(guān)的信息設(shè)置與管理,包括個人文件匯總信息一個用戶可以有多個文件空間 、個人信息管理模塊、搜索模塊、登錄模塊。搜索頁面:主要用于站內(nèi)的信息搜索,包括用戶、文件空間、文件關(guān)鍵字、一般包含信息的搜索及其結(jié)果??刂祁惖淖饔眉斜磉_了系統(tǒng)的業(yè)務(wù)邏輯,因此最終的控制類大局部都映射到了業(yè)務(wù)邏輯層,根據(jù)用例模型中的系統(tǒng)功能性描述,經(jīng)過統(tǒng)籌安排,得出系統(tǒng)中的控制類如下:登錄控制LoginServlet:專門負責登錄的控制邏輯。注冊控制RegisterServlet:專門處理新用戶注冊的問題。查找

16、功能在各個對象上都有表達,最終界面將分類顯示,因此查找功能這樣組織:文件操作FileService:用于統(tǒng)一各類查詢及文件的刪除,下載。文件類型控制GetFile:用于查詢不同類型的文件。用戶查詢UserService:用于對用戶進行各類信息進行篩選查詢。文件上傳(FileUploadServlet): 用于文件的上傳。word.3.3 系統(tǒng)關(guān)鍵抽象概念的獲取與分析系統(tǒng)關(guān)鍵抽象概念的獲取與分析3.4 分析類交互分析類交互下面選取一個簡單的登錄過程和發(fā)布帖子這兩個用例來說明分析類的交互過程分析。登錄過程在所有系統(tǒng)中都有表達,功能也簡單直觀。一般在操作的設(shè)計中,首次登錄的時候只需要輸入用戶標識和密

17、碼即可登錄,當用戶名或密碼不正確時,在后續(xù)的界面上參加驗證碼來防止破解攻擊,屢次無效后一般控制在 10 次賬戶便被鎖定。本系統(tǒng)中由于沒有太大的平安性需求,因此即使屢次登錄失敗賬戶也不需要鎖定,只需參加驗證碼即可。用戶類不屬于系統(tǒng)內(nèi)部,只是用來交互做輸入的,因此可以看出用戶需要翻開主界面,在登錄模塊中輸入用戶名、密碼,點擊登錄即可,成功后在會話中記錄用戶信息,在系統(tǒng)主頁面中記錄平安信息,這樣在各個頁面間跳轉(zhuǎn)的時候就可以共享平安狀態(tài)和平安憑據(jù)了。4 4 系統(tǒng)設(shè)計系統(tǒng)設(shè)計系統(tǒng)設(shè)計中需要綜合考慮功能性需求和非功能性需求,而且非功能性需求更重要。一些局部需要軟件設(shè)計模式的參加,但本人對設(shè)計模式了解還不很

18、透徹,因此設(shè)計中只是完成了功能操作,沒有再細致地考慮調(diào)整其結(jié)構(gòu),讓它滿足設(shè)計模式的要求,當然過多運用設(shè)計模式也會帶來一些負面的影響,比方其結(jié)構(gòu)復(fù)雜,不太容易立即理解,因此后面的設(shè)計暫時以滿足功能要求為第一目標,然后重點考慮實現(xiàn)非功能需求的便捷操作的要求。4.14.1 系統(tǒng)運行平臺的設(shè)計系統(tǒng)運行平臺的設(shè)計選擇選擇整個系統(tǒng)使用 Java 語言作為開發(fā)的根底語言,Web 界面局部搭配使用HTML、CSS、Javascript 以及 JSP 技術(shù)來實現(xiàn)。最終發(fā)布的系統(tǒng)對平臺沒有特別大的強制要求,因為基于 Java 開發(fā)的 Web 型效勞工程,可以選用流行的 Tomcat 效勞器或者 JBoss 效勞器

19、或者 GlassFish 效勞器來搭建,這些都是開源免費的平臺。數(shù)據(jù)庫可以使用 MySQL 數(shù)據(jù)庫,它也是免費使用的數(shù)據(jù)庫,很多大型網(wǎng)站都選用了 MySQL 作為自己的數(shù)據(jù)庫支持平臺。開發(fā)過程中,選擇平臺搭建于 Windows XP 系統(tǒng)下,當然發(fā)布時可以選擇 Windows 平臺或 Linux平臺,兩者的環(huán)境下都有上述的開源軟件。對于硬件平臺,根本上沒有強制性要求,只要是可用的效勞器硬件平臺都能完成正常部署和使用,當然性能高的效勞器對多用戶支持的效果會更好。4.24.2 系統(tǒng)數(shù)據(jù)庫的結(jié)構(gòu)設(shè)計系統(tǒng)數(shù)據(jù)庫的結(jié)構(gòu)設(shè)計根據(jù)前面的需求描述及領(lǐng)域模型的系統(tǒng)關(guān)鍵數(shù)據(jù)抽象,分析得出系統(tǒng)的數(shù)據(jù)庫需要用戶信息表

20、和文件信息表:word.4.34.3 數(shù)據(jù)庫操作的設(shè)計數(shù)據(jù)庫操作的設(shè)計為了簡化數(shù)據(jù)庫操作的代碼,防止過度的重復(fù)數(shù)據(jù)庫常規(guī)執(zhí)行的初始代碼,將數(shù)據(jù)庫操作進行封裝是很必要的,這也為后期數(shù)據(jù)庫升級和系統(tǒng)功能升級提供便利。數(shù)據(jù)庫操作的封裝還能有效隔離軟件對具體數(shù)據(jù)庫的依賴。在實際工程開發(fā)中可以用的框架較多,比方 JPA 框架、Hibernate 框架、JDO 訪問等,這些框架支持強大,但使用起來需要配置和編程傳遞接口等,因此在大中型工程中使用是較為合理的,本系統(tǒng)針對數(shù)據(jù)查詢和更新操作較為簡單,沒有過多的附加操作,因此使用Apache 的開源工程 JDBC 可以很好的實現(xiàn)數(shù)據(jù)庫的訪問和操作。在工程中定義

21、ConnDB 訪問數(shù)據(jù)源封裝信息。private static final String driver = com.mysql.jdbc.Driver; /數(shù)據(jù)庫驅(qū)數(shù)據(jù)庫驅(qū)動動public Connection getConnection() Connection conn = null; /加載數(shù)據(jù)庫驅(qū)動加載數(shù)據(jù)庫驅(qū)動tryClass.forName(driver);conn = DriverManager.getConnection(word.jdbc:mysql:/localhost:3306/hxj useUnicode=true&characterEncoding=utf8,

22、root,123456); catch(Exception e)e.printStackTrace();System.out.println(數(shù)據(jù)庫連接成功!數(shù)據(jù)庫連接成功!);return conn;使用 ConnDB 中的類進行操作,簡化了大量的數(shù)據(jù)庫訪問代碼。比方要查閱回復(fù)情況,定義查詢條件,可以直接調(diào)用 ConnDB 來創(chuàng)立連接數(shù)據(jù)庫。比起常規(guī)的 JDBC 操作有了極大的簡化。因此使用 Apache 的組件可以極大的提高開發(fā)的效率。4.44.4 用戶界面設(shè)計用戶界面設(shè)計用戶界面局部總體上劃分為以下幾個方面:登錄注冊頁首頁面、個人中心頁面、搜索頁面、文件上傳頁,文件列表頁。主頁頁面:登錄

23、頁面:word.注冊頁面:個人主頁:搜索頁:word.文件上傳頁:文件瀏覽頁:word.5 5 系統(tǒng)系統(tǒng)實現(xiàn)實現(xiàn)系統(tǒng)實現(xiàn)中,主要是根據(jù)設(shè)計模式實現(xiàn)其中定義的方法和功能即可。在軟件工程中實現(xiàn)的工作量比設(shè)計要輕很多,這也是 軟件工程 課程中重點提醒的要重設(shè)計、輕實現(xiàn)的思想。這里選介紹具體實現(xiàn)過程,由于篇幅所限,只給出核心功能代碼,頁面樣式代碼省略。首先給出本系統(tǒng)需要的兩個根本實體類的設(shè)計,用戶和文件,以及它們對應(yīng)的操作類,后面的功能都是基于此實現(xiàn)的用戶類:public class User private int id;private String username;private String

24、password;public User()public int getId() return id;public void setId(int id) this.id = id;public String getUsername() return username;public void setUsername(String username) this.username = username;public String getPassword() return password;public void setPassword(String password) this.password =

25、 password;文件類:public class File private int id;private String title;private String type;private String publishingtime;public File()word.public File(int id,String title,String type,String publishingtime)this.id=id;this.title=title;this.type=type;this.publishingtime=publishingtime;public int getId() r

26、eturn id;public void setId(int id) this.id = id;public String getTitle() return title;public void setTitle(String title) this.title = title;public String getType() return type;public void setType(String type) this.type = type;public String getPublishingtime() return publishingtime;public void setPub

27、lishingtime(String publishingtime) this.publishingtime = publishingtime;用戶信息操作類:public class UserDao public void addUser(User user) Connection conn = new ConnDB().getConnection();PreparedStatement pstmt = null;try String sql = insert into user(username,password) +values(+user.getUsername()+,+user.ge

28、tPassword()+);pstmt = conn.prepareStatement(sql);pstmt.executeUpdate(); catch (Exception e) e.printStackTrace();word.finallytry conn.close();pstmt.close(); catch (SQLException e) e.printStackTrace();public User getUserById(String id) Connection conn = new ConnDB().getConnection();PreparedStatement p

29、stmt = null;ResultSet rs = null;User us = new User();try String sql = select * from user where id=+id+;pstmt = conn.prepareStatement(sql);rs = pstmt.executeQuery();if(rs.next()us.setId(rs.getInt(id);us.setUsername(rs.getString(username);us.setPassword(rs.getString(uassword); catch (Exception e) e.pr

30、intStackTrace();finallytry conn.close();pstmt.close();rs.close(); catch (SQLException e) e.printStackTrace();return us;public List getUserByUserName(String username) ConnDB myDB = new ConnDB();User user = new User();List list = new ArrayList();String sql = select * from user where username =+usernam

31、e+;tryResultSet mySet = myDB.getResultSet(sql);while(mySet.next()word.user.setId(mySet.getInt(id);user.setUsername(mySet.getString(username);user.setPassword(mySet.getString(password);list.add(user);catch(SQLException sqlEx)sqlEx.printStackTrace();catch(ClassNotFoundException cnfEx)cnfEx.printStackT

32、race();finallytrymyDB.releaseConnection();catch(SQLException sqlEx)sqlEx.printStackTrace();return list;文件操作類:public class FileDao public FileDao()public void addFile(File file) ConnDB myDB = new ConnDB();String sql =insert into file+(title,type,publishingtime) values(+file.getTitle()+,+file.getType(

33、)+,+file.getPublishingtime()+);trymyDB.executeSQL(sql);catch(SQLException sqlEx)sqlEx.printStackTrace();catch(ClassNotFoundException cnfEx)cnfEx.printStackTrace();public boolean deleteFile(int id)ConnDB myDB = new ConnDB();String sql =delete from file where id=+id+;trymyDB.executeSQL(sql);return tru

34、e;catch(SQLException sqlEx)word.sqlEx.printStackTrace();return false;catch(ClassNotFoundException cnfEx)cnfEx.printStackTrace();return false;public File getFileByTitle(String title)ConnDB myDB = new ConnDB();File file = new File();String sql =select * from file where title=+title+;tryResultSet mySet

35、 = myDB.getResultSet(sql);while(mySet.next()file.setId(mySet.getInt(id);file.setTitle(mySet.getString(title);file.setType(mySet.getString(type);file.setPublishingtime(mySet.getString(publishingTime);catch(ClassNotFoundException cnfEx)cnfEx.printStackTrace();catch(SQLException sqlEx)sqlEx.printStackT

36、race();finallytrymyDB.releaseConnection();catch(SQLException sqlEx)sqlEx.printStackTrace();return file; public List getFileByType(String type) String sql = select * from file where type=+type+; return getFileBySqlString(sql); public List getAllFile() String sql = select * from file;return getFileByS

37、qlString(sql);public List getFileBySqlString(String sql)ConnDB myDB = new ConnDB();List list = new ArrayList();tryword.ResultSet mySet = myDB.getResultSet(sql);while(mySet.next()File file = new File();file.setId(mySet.getInt(id);file.setTitle(mySet.getString(title);file.setType(mySet.getString(type)

38、;file.setPublishingtime(mySet.getString(publishingTime);list.add(file);catch(ClassNotFoundException cnfEx)cnfEx.printStackTrace();catch(SQLException sqlEx)sqlEx.printStackTrace();finallytrymyDB.releaseConnection();catch(SQLException sqlEx)sqlEx.printStackTrace();return list;5.15.1注冊登錄的實現(xiàn)注冊登錄的實現(xiàn)注冊功能主

39、要實現(xiàn)往數(shù)據(jù)庫存儲用戶信息:用戶名: 密 碼: 控制處理層:public class RegisterServlet extends HttpServlet word.public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException doPost(request, response);public void doPost(HttpServletRequest request, HttpServletResponse response)th

40、rows ServletException, IOException response.setContentType(text/html);request.setCharacterEncoding(utf-8);response.setCharacterEncoding(utf-8);PrintWriter out=response.getWriter();String username=request.getParameter(username);String password = request.getParameter(password);tryUser user = new User(

41、);if(username !=null & password !=null)user.setUsername(username);user.setPassword(password);UserService userService=new UserService();/調(diào)用業(yè)務(wù)邏輯層的方法完成注冊功能userService.addUser(user);out.write(注冊成功!);else out.write(注冊信息不完整!); catch(Exception ex)ex.printStackTrace(); out.write(注冊失??!);out.flush();out.c

42、lose();登錄功能主要通過一個表單提交用戶信息給 servlet,效勞器查詢數(shù)據(jù)庫與之匹配,成功那么跳轉(zhuǎn)到主頁,否那么給出登錄失敗提示信息:用戶名: 密碼: 控制處理層:public class LoginServlet extends HttpServlet public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException doPost(request, response);public void doPost(HttpServle

43、tRequest request, HttpServletResponse response)throws ServletException, IOException response.setContentType(text/html);request.setCharacterEncoding(utf-8);response.setCharacterEncoding(utf-8); PrintWriter out=response.getWriter(); HttpSession session=request.getSession();String username = request.ge

44、tParameter(username);String password = request.getParameter(password);UserService userService=new UserService();if(userService.validateUser(username,password) = 1)session.setAttribute(user, username);response.sendRedirect(./index.jsp) ; elseout.write(登錄失敗,請重新登錄!);out.flush();out.close();5.25.2上傳文件的實

45、現(xiàn)上傳文件的實現(xiàn)文件上傳主要運用了 Apache 的 Commons FileUpload 組件,前端表單傳遞過來文件的信息,后端用組件處理:public class FileUploadServlet extends HttpServlet private static final long serialVersionUID = -7744625344830285257L; private ServletContext sc; private String savePath; com.hjj.bean.File file =new com.hjj.bean.File(); FileServi

46、ce fileService= new FileService(); public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException doPost(request, response); word. public void init(ServletConfig config) / 在web.xml中設(shè)置的一個初始化參數(shù) savePath = config.getInitParameter(savePath); sc = config.

47、getServletContext(); public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException request.setCharacterEncoding(UTF-8); DiskFileItemFactory factory = new DiskFileItemFactory(); ServletFileUpload upload = new ServletFileUpload(factory); try List ite

48、ms = upload.parseRequest(request); Iterator itr = items.iterator(); while (itr.hasNext() FileItem item = (FileItem) itr.next(); if (item.isFormField() if (item.getFieldName().equals(title) file.setTitle(item.getString(UTF-8); if (item.getFieldName().equals(type) file.setType(item.getString(UTF-8); e

49、lse if (item.getName() != null & !item.getName().equals() File tempFile = new File(item.getName(); /上傳文件的保存路徑 File file = new File(sc.getRealPath(/)+savePath, tempFile.getName(); item.write(file); else request.setAttribute(upload.message, 沒有選擇文件!); file.setPublishingtime(new Date().toString(); f

50、ileService.addFile(file); request.setAttribute(upload.message, 文件上傳成功!); catch(FileUploadException e) e.printStackTrace(); catch (Exception e) e.printStackTrace(); request.setAttribute(upload.message, 文件上傳失??!); request.getRequestDispatcher(/uploadResult.jsp).forward(request, word.response); 5.35.3搜索

51、文件的實現(xiàn)搜索文件的實現(xiàn)頁面實現(xiàn): 搜索文件 文件名稱: 數(shù)據(jù)處理if(action.equals(find)String filename = request.getParameter(filename);File file =idao.getFileByTitle( filename);if(file!=null)request.setAttribute(do.message, file.getTitle();elserequest.setAttribute(do.message, 文件找不到!);request.getRequestDispatcher(/findfileResult.j

52、sp).forward(request, response);5.45.4分類瀏覽的實現(xiàn)分類瀏覽的實現(xiàn)分類瀏覽的功能主要是在個人主頁實現(xiàn)用 4 個圖標跳轉(zhuǎn)到不同的文件頁面,跳轉(zhuǎn)后頁面的業(yè)務(wù)邏輯代碼負責從數(shù)據(jù)庫獲取不同文件的信息并返回用以展現(xiàn): word. 業(yè)務(wù)邏輯處理: 文件名稱文件類型上傳時間操作% FileDao fileDao = new FileDao(); List list =fileDao.getFileByType(text); /循環(huán)文件列表,顯示文件信息 if(list!=null&list.size()0) for(int i=0;i a href=servlet

53、/doServletaction=delete&id= onclick=delcfm();刪除a href=servlet/doServletaction=down&id= onclick=delcfm();下載 5.55.5刪除下載的實現(xiàn)刪除下載的實現(xiàn)在每條文件信息的后面都有兩個按鈕,用以實現(xiàn)文件的刪除和下載,其后臺處理代碼如下:public class FileServlet extends HttpServletword.private String action ; private FileDao idao = new FileDao();public FileServ

54、let() super();public void destroy() super.destroy(); public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException doPost(request,response);public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOExcepti

55、on response.setContentType(text/html;charset=utf-8);PrintWriter out = response.getWriter();if(request.getParameter(action)!=null)this.action = request.getParameter(action);if(action.equals(down) if(downFile(request,response)request.setAttribute(do.message, 文件下載成功!);elserequest.setAttribute(do.messag

56、e, 文件下載失敗!);request.getRequestDispatcher(/doResult.jsp).forward(request, response);if(action.equals(delete) if(deleteFile(request,response)request.setAttribute(do.message, 文件刪除成功!);elserequest.setAttribute(do.message, 文件刪除失??!);request.getRequestDispatcher(/doResult.jsp).forward(request, response);pr

57、ivate boolean downFile(HttpServletRequest request, HttpServletResponse response)String id = request.getParameter(id);int idd= Integer.parseInt(id);If(idao.getFileById(idd)String uploadFilePath = this.getServletContext().getRealPath(/WEB-INF/uploads); /存儲要下載的文件名 Map fileNameMap = new HashMap();word. /遞歸遍歷 uploads 目錄下的所有文件和目錄,將文件的文件名存儲到 map 集合中 uploads(new File(uploadFilePath),f

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論