jsp-后臺(tái)模塊的設(shè)計(jì)與實(shí)現(xiàn)_第1頁
jsp-后臺(tái)模塊的設(shè)計(jì)與實(shí)現(xiàn)_第2頁
jsp-后臺(tái)模塊的設(shè)計(jì)與實(shí)現(xiàn)_第3頁
jsp-后臺(tái)模塊的設(shè)計(jì)與實(shí)現(xiàn)_第4頁
jsp-后臺(tái)模塊的設(shè)計(jì)與實(shí)現(xiàn)_第5頁
已閱讀5頁,還剩27頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

PAGE分類號:TP315UDC:D10621-408-(2007)5746-0密級:公開編號:2003215065八年經(jīng)驗(yàn)專業(yè)指導(dǎo)畢業(yè)設(shè)計(jì)需要全套設(shè)計(jì)請聯(lián)系:731767310學(xué)位論文論文格式化系統(tǒng)——后臺(tái)模塊的設(shè)計(jì)與實(shí)現(xiàn)論文作者姓名:申請學(xué)位專業(yè):網(wǎng)絡(luò)工程申請學(xué)位類別:工學(xué)學(xué)士論文提交日期:論文格式化系統(tǒng)——后臺(tái)模塊的設(shè)計(jì)與實(shí)現(xiàn)摘要論文的格式修改是一件很麻煩的事情,一篇論文在定稿以前為了讓格式達(dá)到標(biāo)準(zhǔn),需要修改很多次,浪費(fèi)了大量時(shí)間。本系統(tǒng)的設(shè)計(jì)初衷就是為了解決論文書寫格式的規(guī)范化,方便學(xué)者論文格式的自動(dòng)生成。本系統(tǒng)是基于Java平臺(tái)的Web應(yīng)用程序。采用JSP作為后臺(tái)開發(fā)語言,HTML和JavaScript作為前臺(tái)開發(fā)語言,MYSQL5.0作為后臺(tái)數(shù)據(jù)庫,系統(tǒng)具有穩(wěn)定性高、可移植性強(qiáng)等特點(diǎn)。本系統(tǒng)中文檔數(shù)據(jù)的傳輸和存儲(chǔ)均使用XML形式,以XML作為數(shù)據(jù)的中間狀態(tài),便于以后進(jìn)行系統(tǒng)的擴(kuò)展。完成了論文的格式化,生成格式化后的word文件和PDF文件,并提供給用戶進(jìn)行下載。本系統(tǒng)設(shè)計(jì)過程中使用了當(dāng)前比較流行的技術(shù),比如使用AJAX技術(shù)來進(jìn)行注冊驗(yàn)證,系統(tǒng)架構(gòu)使用B/S模式進(jìn)行設(shè)計(jì)。關(guān)鍵詞:格式化;移植性;數(shù)據(jù)庫TheEssayFormattingSystem——Server-sideDesignandImplementationAbstractModificationtheformatofthesisisalwaysatroublesomething.Inordertomakethethesismatchtheformatbeforethefinalversionortextneedmanytimesamending,whichisawasteoftime.Thissystemismeantosolvetheproblemwhichcanmodifytheformatofthethesisautomatically,andcreatetheformateasily.ThissystemisawebapplicationbasedonJavaplatform.JSPisthebackgroundprogramlanguagewhilehtmlandJavaScriptastheforestageprogramlanguage.ThesystemisstableandcanbereplantedbyusingtheMYSQL5.0asthedatabase.Thetransmissionandstorageofthedocumentinthesystemareallusingxmlform.Usingthexmlasthemiddlestateofthedataisconvenienceforthesystemexpending,aftertheformatofthethesiswillcreateaformattedwordorPDFdocument.Thissystemisdesignedbyusingthemostpopulartechnology,suchasAJAXtechniquetocheckregistration.Thissystemisdesignedbasedonb/smode.Keywords:format;replant;database目錄論文總頁數(shù):27頁1 引言 11.1 課題背景 11.2 國內(nèi)外研究現(xiàn)狀 11.3 本課題研究的意義 11.4 本課題的研究方法 12 論文格式化系統(tǒng)總體設(shè)計(jì) 22.1 論文格式化系統(tǒng)的需求分析 22.1.1 功能需求 22.1.2 性能需求 22.2 論文格式化系統(tǒng)選型 22.2.1 設(shè)計(jì)語言的選擇 32.2.2 數(shù)據(jù)庫的選擇 42.2.3 開發(fā)工具的選擇 52.2.4 文檔轉(zhuǎn)換技術(shù)的選擇 52.3 環(huán)境搭建 62.3.1 安裝jdk 62.3.2 安裝Tomcat 62.3.3 安裝Mysql 72.3.4 安裝JDBC驅(qū)動(dòng)程序: 73 論文格式化系統(tǒng)詳細(xì)設(shè)計(jì) 73.1 系統(tǒng)功能模塊和結(jié)構(gòu)設(shè)計(jì) 73.2 設(shè)計(jì)思想 93.3 數(shù)據(jù)庫設(shè)計(jì) 93.3.1數(shù)據(jù)庫需求分析 93.3.2數(shù)據(jù)庫實(shí)體關(guān)系設(shè)計(jì) 93.3.3數(shù)據(jù)庫邏輯設(shè)計(jì) 103.4 前臺(tái)界面的設(shè)計(jì) 113.4.1 首頁的設(shè)計(jì) 113.4.2 登錄頁面的設(shè)計(jì) 123.4.3 用戶不存在頁面的設(shè)計(jì) 123.4.4 密碼錯(cuò)誤頁面的設(shè)計(jì) 123.4.5 登錄成功頁面的設(shè)計(jì) 123.4.6 注冊頁面的設(shè)計(jì) 133.4.7 注冊成功頁面的設(shè)計(jì) 133.4.8 提取或顯示記錄頁面的設(shè)計(jì) 133.5 后臺(tái)的編寫 143.5.1 數(shù)據(jù)庫操作模塊 143.5.2 用戶登錄模塊 153.5.3 注冊及驗(yàn)證模塊 153.5.4 記錄上傳與下載模塊 163.5.5 文檔轉(zhuǎn)換模塊 173.6 xslt模板 213.7 xslt簡介 213.8 web.xml文件的配置 23結(jié)論 25參考文獻(xiàn) 25致謝 26聲明 27第27頁共27頁引言課題背景在人們繁忙的工作環(huán)境中,很多資料文件都要形成規(guī)范化的文檔便于分類和存放,信息化的社會(huì)已經(jīng)將以前手工抄寫文檔全部用電腦辦公平臺(tái)提供的統(tǒng)一的文檔編輯軟件所取代,當(dāng)然所編寫的文檔的格式也是統(tǒng)一化的,包括文檔中內(nèi)容的字體,字號,標(biāo)記,頁碼等等都是統(tǒng)一的。比如美國微軟公司的word文檔格式,這種格式已經(jīng)成為了世界的一種標(biāo)準(zhǔn),全世界通用,再比如Adobe公司的PDF文檔格式,也是一種世界標(biāo)準(zhǔn),是人們常用的一種文檔格式。然而在日常的辦公中,人們需要在文檔編輯軟件中編輯文檔,需要花費(fèi)大量的時(shí)間和精力來編輯文檔的格式,比如字體,字號等等,對于同一類的文檔來說,格式都是規(guī)范化好了的,但是文檔編輯器不可能提供每一個(gè)規(guī)范好了的模板,因?yàn)楦鱾€(gè)地區(qū)或者企業(yè)他都有自己的規(guī)范,人們需要自己去編輯,這樣話就降低了辦公的效率,對于個(gè)人和企業(yè)來說都是在浪費(fèi)時(shí)間,提高了成本。于是聰明的人開始想辦法解決這個(gè)問題,新的軟件由此產(chǎn)生了,涌現(xiàn)出了很多的PDF、word文檔的轉(zhuǎn)換軟件,他們很強(qiáng)大,不僅可以將PDF轉(zhuǎn)換為word,也可以將word轉(zhuǎn)換成PDF格式,有的也可以轉(zhuǎn)換其他格式的文檔,比如將HTML文檔轉(zhuǎn)化成PDF文檔。國內(nèi)外研究現(xiàn)狀在國外很早就開始進(jìn)行文檔自動(dòng)化的研究了,但是都是進(jìn)行底層的文檔生成工作,都是提供一個(gè)底層平臺(tái),用戶使用平臺(tái)提供的API,基于自己的特定目標(biāo)進(jìn)行二次開發(fā)。很多公司都是使用開源的第三方包,在遵守開源許可證的基礎(chǔ)上進(jìn)行產(chǎn)品開發(fā)。本課題研究的意義考慮到高等學(xué)府中教師,學(xué)生也要寫論文,而且所寫的論文要保存為特定格式的文檔,保證論文的規(guī)范化,為此,我們設(shè)計(jì)了一套系統(tǒng)專門提供給畢業(yè)生將論文轉(zhuǎn)化為規(guī)范的格式,省去大量的論文編輯時(shí)間,提高論文發(fā)表的效率,降低論文修改的頻率,給同學(xué)們帶來巨大的方便。我們將系統(tǒng)定位于B/S模式,主要考慮到系統(tǒng)易用性,客戶機(jī)只需要安裝了IE瀏覽器就可以通過訪問網(wǎng)站的形式使用論文格式化系統(tǒng),只是本系統(tǒng)一大優(yōu)勢。本課題的研究方法通過對業(yè)界使用的各種文檔轉(zhuǎn)換技術(shù)進(jìn)行比較分析,找到最適合本課題的技術(shù),然后使用選擇的技術(shù)構(gòu)建本系統(tǒng)。論文格式化系統(tǒng)總體設(shè)計(jì)論文格式化系統(tǒng)的需求分析功能需求=1\*GB3①支持用戶注冊因?yàn)橛脩粜枰獙⑽臋n內(nèi)容保存在服務(wù)器上,所以必須實(shí)現(xiàn)用戶的注冊功能。用戶需要保存的信息包括用戶名、呢稱、密碼、性別、電子郵件地址、省份、城市、注冊時(shí)間,用戶信息將保存在數(shù)據(jù)庫中。=2\*GB3②支持用戶登錄用戶登錄以后才能進(jìn)行文檔的上傳以及轉(zhuǎn)換等操作,這就要求保持會(huì)話信息。=3\*GB3③支持用戶取回記錄用戶登錄以后,可以將服務(wù)器上保存的數(shù)據(jù)取下來,進(jìn)行再次修改。=4\*GB3④支持用戶上傳記錄用戶第一次錄入數(shù)據(jù),或者是用戶將服務(wù)器上取回的數(shù)據(jù)進(jìn)行修改以后,可以將數(shù)據(jù)上傳至服務(wù)器,并且在數(shù)據(jù)庫中添加記錄的文件名路徑。⑤支持用戶轉(zhuǎn)換成word文檔用戶通過頁面的向服務(wù)器提交轉(zhuǎn)換成word文檔的請求,服務(wù)器接受到請求以后,將文檔轉(zhuǎn)換成word文檔,然后再傳送給客戶端,供用戶下載使用。⑥支持用戶轉(zhuǎn)換成PDF文檔用戶通過頁面的向服務(wù)器提交轉(zhuǎn)換成PDF文檔的請求,服務(wù)器接受到請求以后,將文檔轉(zhuǎn)換成PDF文檔,然后再傳送給客戶端,供用戶下載使用。⑦支持可配置性,便于移植模板的可配置性:針對具體的應(yīng)用場景,通過修改模板文件,就可以生成合乎用戶要求的文檔。環(huán)境的可配置性:數(shù)據(jù)庫的用戶名、密碼,以及模板文件的存放路徑,用戶數(shù)據(jù)的存放路徑,都應(yīng)該通過配置文件實(shí)現(xiàn)。性能需求=1\*GB3①一個(gè)用戶不能看到其他用戶的記錄。=2\*GB3②充分考慮易用性和實(shí)用性。=3\*GB3③軟件應(yīng)該以B/S架構(gòu),界面簡單易用。論文格式化系統(tǒng)選型對系統(tǒng)設(shè)計(jì)語言、后臺(tái)數(shù)據(jù)庫的選擇直接影響到系統(tǒng)在各種平臺(tái)上運(yùn)行時(shí)性能的好壞,對日后系統(tǒng)性能的擴(kuò)展具有決定性的作用。因此,論文格式化系統(tǒng)在設(shè)計(jì)初期做了詳細(xì)的系統(tǒng)選型。設(shè)計(jì)語言的選擇=1\*Arabic1、JavaServerPage概述JSP(JAVAServerPage)是由Sun公司于1999年6月推出的新技術(shù),是基于JavaServlet以及整個(gè)JAVA體系的Web開發(fā)技術(shù),能夠?qū)崿F(xiàn)跨平臺(tái)和兼容各種Web服務(wù)器產(chǎn)品,而且還能夠把強(qiáng)大的Java服務(wù)器應(yīng)用技術(shù)(Server-sideJavaTechnology)有機(jī)的融合到HTML網(wǎng)頁中去。它是結(jié)合markup(HTML或XML)和JAVA代碼來處理的一種動(dòng)態(tài)頁面。每一頁第一次被調(diào)用時(shí),通過JSP引擎自動(dòng)被編譯成Servlet,然后被執(zhí)行,以后每次調(diào)用時(shí),執(zhí)行編譯過的Servlet。JSP提供了多種方式訪問Javaclass、Servlet、Applets和WebServer,因此,Web應(yīng)用的功能可以分成多個(gè)明確定義功用接口的組件,通過JSP將它們結(jié)合在一起。這種模式允許工作分成兩部分:組件開發(fā)與頁面設(shè)計(jì)和編譯(結(jié)合一些方法調(diào)用)。在這種應(yīng)用編譯模式,使得業(yè)務(wù)邏輯和數(shù)據(jù)處理分開。=2\*Arabic2、JSP與ASP的比較JSP與ASP技術(shù)非常相似,兩者都提供在HTML代碼中混合某種程序代碼、由語言引擎解釋執(zhí)行程序代碼的能力。并且雙方都能夠?yàn)槌绦騿T提供組件設(shè)計(jì)的功能,(ASP使用COM組件、JSP使用JavaBean組件)。兩者都是面向Web服務(wù)器的技術(shù),客戶端瀏覽器不需要任何附加的軟件支持。兩者之間主要的區(qū)別:①平臺(tái)和服務(wù)器的選擇ASP技術(shù)主要在微軟公司的Windows平臺(tái)上運(yùn)行,包括Windows2000、WindowsXP和Windows2003,并且搭配其WEB服務(wù)器IIS。但是,在其他的平臺(tái)運(yùn)行時(shí),不是性能低落,就是不支持。JSP技術(shù)主要運(yùn)行在操作系統(tǒng)上的一個(gè)JavaVirtualMachine虛擬機(jī)器上,因此,它能夠跨越所有的平臺(tái)。并且能夠搭配現(xiàn)有的WEB服務(wù)器:Apache、IIS、Tomcat等等。因此,JSP技術(shù)在跨平臺(tái)的表現(xiàn)比ASP來得更有彈性。②語法結(jié)構(gòu)兩者都使用相同的標(biāo)記符號作為程序的區(qū)段范圍。不同的是,標(biāo)記符號之間ASP使用JavaScript和VBScript語言,而JSP使用Java語言,Java是有嚴(yán)格規(guī)劃、強(qiáng)大且易擴(kuò)充的語言,且提供強(qiáng)大的異常事件處理機(jī)制。遠(yuǎn)優(yōu)于VBScript語言。③語法的延展性ASP與JSP都是使用標(biāo)簽和ScriptingLanguage來制作動(dòng)態(tài)WEB網(wǎng)頁,JSP能夠讓程序員自由的擴(kuò)展JSP標(biāo)簽來應(yīng)用,所以程序員能充分的利用與XML兼容的標(biāo)簽技術(shù)強(qiáng)大的功能,大大的減低了對Java語法的依賴,并且也可以利用XML強(qiáng)大的功能,做到數(shù)據(jù)、文件格式的標(biāo)準(zhǔn)化。④執(zhí)行性能JSP除了在一開始加載的時(shí)間會(huì)比較久之外,之后的表現(xiàn)就遠(yuǎn)遠(yuǎn)比ASP的表現(xiàn)來得好。原因在于:JSP在一開始接受到請求時(shí),會(huì)產(chǎn)生一份Servlet實(shí)體(instance),它會(huì)先被暫存在內(nèi)存中,一般稱之為持續(xù)(Persistence),當(dāng)再有相同的請求時(shí),這實(shí)體會(huì)產(chǎn)生一個(gè)線程來服務(wù)它,如果過了一段時(shí)間都不再用到此實(shí)體時(shí),Container會(huì)自動(dòng)將其釋放,至于時(shí)間的長短,通常都可以在Container上自行設(shè)定。JSP的執(zhí)行過程如圖1所示:瀏覽器瀏覽器IENetscape23JSPPage產(chǎn)生Servlet經(jīng)編譯Servlet1Request4Response圖1JSP的執(zhí)行過程而ASP在每次接收到請求時(shí),都必須重新編譯。因此,JSP的執(zhí)行比每次都要編譯執(zhí)行的ASP要快,尤其是程序中存在循環(huán)操作時(shí),JSP的速度要快上1到2倍。綜上所述,基于JSP語言在多方面的優(yōu)點(diǎn),CRM系統(tǒng)在進(jìn)行后臺(tái)編碼時(shí)采用了發(fā)展前景良好的JSP語言。數(shù)據(jù)庫的選擇本系統(tǒng)的數(shù)據(jù)庫選用的是MYSQL。首先,它提供了以Web標(biāo)準(zhǔn)為基礎(chǔ)的擴(kuò)展數(shù)據(jù)庫編程功能,可支持Web的分析,對數(shù)據(jù)的Web訪問。其次,它具有良好的移植性,可以移植到幾乎所有平臺(tái)。最后,它是免費(fèi)的,極大的節(jié)約了成本。開發(fā)工具的選擇Eclipse是一個(gè)很讓人著迷的開發(fā)環(huán)境,它提供的核心框架和可擴(kuò)展的插件機(jī)制給廣大的程序員提供了無限的想象和創(chuàng)造空間。目前網(wǎng)上流傳相當(dāng)豐富且全面的開發(fā)工具方面的插件,但是Eclipse已經(jīng)超越了開發(fā)環(huán)境的概念,可以想象Eclipse將成為未來的集成的桌面環(huán)境。目前的Eclipse本身就具備資源管理和外部程序的功能,加上無所不能的插件,將構(gòu)成一個(gè)豐富多彩的工作環(huán)境而不僅僅是一個(gè)IDE。因此,在進(jìn)行論文格式化系統(tǒng)編碼時(shí)選用了eclipse3.2。前臺(tái)頁面設(shè)計(jì),使用了DreamweaverMX2004。文檔轉(zhuǎn)換技術(shù)的選擇WORD文檔生成技術(shù)分析:1.使用iText進(jìn)行WORD文檔直接的生成,這種技術(shù)是比較成熟的,但是它的生成文檔操作,需要對文檔的結(jié)構(gòu)進(jìn)行一步步的構(gòu)造,格式有輕微的變動(dòng),都必須通過編程進(jìn)行,不能使用模板進(jìn)行文檔的生成。2.使用word提供的COM自動(dòng)化接口控制word生成文檔,這種方法靠word進(jìn)程實(shí)際完成文件生成工作,而word并非設(shè)計(jì)為在服務(wù)器端處理并發(fā)調(diào)用,所以這種方法只適合單機(jī)應(yīng)用。另外,如果要生成比較復(fù)雜的word文件,相應(yīng)的代碼會(huì)非常煩瑣,排版和調(diào)試也需要花大量時(shí)間。3.利用Word對html的支持,制作HTML文件,并設(shè)置其ContentType為"application/msword",使瀏覽器調(diào)用word打開,這種方法的致命問題是html文檔中無法保存二進(jìn)制數(shù)據(jù),比如圖片,如果在服務(wù)器端生成一堆文件,即難以在瀏覽器中顯示,也無法讓用戶直接下載。4.基于WordML來生成word文件。WordML是微軟為Word設(shè)計(jì)的XML架構(gòu),其完整語法可以在MSDN上找到。按照這個(gè)語法生成xml文件,可以在文檔中隨意得到各種word支持的格式。因?yàn)閃ordML是比較新的技術(shù),如果生成這種文件,會(huì)導(dǎo)致較老的版本比如office97不能打開,所以這種方法的缺陷也比較明顯。5.使用JasperReports等報(bào)表生成工具生成word文檔,JasperReports強(qiáng)項(xiàng)在于報(bào)表的生成,生成的word文檔都是帶狀的,每一頁的關(guān)系不是很緊密,它是以整個(gè)報(bào)表的各部分來進(jìn)行設(shè)計(jì)的,而我們生成的文檔是以一篇文章的結(jié)構(gòu)來組織的,所以這種方式不適合。6.直接使用XML+XSLT方式解決,最終生成RTF格式的word文檔,我們只需要將數(shù)據(jù)放在XML文件中,以XSLT文件作為模板來進(jìn)行格式的定制。word文檔生成技術(shù)的選擇:經(jīng)過對六種技術(shù)進(jìn)行比較后,我們選擇第六種技術(shù)進(jìn)行word文檔的生成。PDF文檔生成技術(shù)比較分析:1.使用iText技術(shù)進(jìn)行PDF文檔的生成,同使用iText生成word文檔一樣,它是對文檔中的每一個(gè)元素都使用編程接口進(jìn)行生成,不支持模板方式,生成文檔很復(fù)雜。2.使用JasperReports等報(bào)表生成工具生成PDF文檔,JasperReports強(qiáng)項(xiàng)在于報(bào)表的生成,生成的word文檔都是帶狀的,每一頁的關(guān)系不是很緊密,它是以整個(gè)報(bào)表的各部分來進(jìn)行設(shè)計(jì)的,而我們生成的文檔是以一篇文章的結(jié)構(gòu)來組織的,所以這種方式不適合。3.使用FOP技術(shù)生成PDF文檔,這種技術(shù)將XSL-FO元素轉(zhuǎn)換成PDF文檔,而XSL-FO元素可以通過XML+XSLT方式來生成,我們只需要將數(shù)據(jù)放在XML文件中,以XSLT文件作為模板來進(jìn)行格式的定制。PDF文檔生成技術(shù)的選擇:經(jīng)過對三種技術(shù)進(jìn)行比較,我們選擇第三種技術(shù)進(jìn)行PDF文檔的生成。環(huán)境搭建安裝JDK在設(shè)計(jì)論文格式化系統(tǒng)時(shí)使用的是jdk1.5.0版本,安裝路徑為:C:\jdk1.5.0,從【我的電腦】→【屬性】→【高級】→【環(huán)境變量】→【系統(tǒng)變量】→【新建】JAVA_HOME=C:\jdk1.PATH=%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%JAVA_HOME%;.;%JAVA_HOME%\binCLASSPATH=%JAVA_HOME%\bin;.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar安裝Tomcat系統(tǒng)使用的Tomcat是5.5版本,安裝路徑為:D:\ProgramFiles\ApacheSoftwareFoundation\Tomcat5.5,在安裝完成之后,進(jìn)行了以下設(shè)置:TOMCAT_HOME=D:\ProgramFiles\ApacheSoftwareFoundation\Tomcat5.5CATALINA_HOME=D:\ProgramFiles\ApacheSoftwareFoundation\Tomcat5.5將%TOMCAT_HOME%\common\lib\servlet.jar;追加到CLASSPATH后。修改后:CLASSPATH=%JAVA_HOME%\bin;.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;%TOMCAT_HOME%\common\lib\servlet.jar安裝MYSQL去下載windows下的二進(jìn)制安裝包,下載完成后默認(rèn)安裝就可以了。安裝JDBC驅(qū)動(dòng)程序:在MYSQL官方網(wǎng)站下載mysql5.0.18版本對應(yīng)的JDBC驅(qū)動(dòng)程序jar包,將其放入tomcat安裝目錄的\common\lib到此,設(shè)計(jì)論文格式化系統(tǒng)的設(shè)計(jì)環(huán)境搭建完成。論文格式化系統(tǒng)詳細(xì)設(shè)計(jì)系統(tǒng)詳細(xì)設(shè)計(jì)系統(tǒng)流程在本系統(tǒng)中,角色只有用戶一種,用戶只有登錄以后才具有各個(gè)操作的權(quán)限。該系統(tǒng)的系統(tǒng)流程如圖2所示:圖2論文格式化系統(tǒng)流程圖流程描述:當(dāng)用戶第一次使用這個(gè)系統(tǒng)的時(shí)候,首先會(huì)注冊一個(gè)賬號。用戶使用已經(jīng)存在的賬號登錄系統(tǒng),在這個(gè)過程中,如果發(fā)生錯(cuò)誤,將會(huì)轉(zhuǎn)到指定的錯(cuò)誤頁面。如果登錄成功,用戶可以直接進(jìn)入編輯頁面進(jìn)行編輯,或者直接提取以前的記錄進(jìn)行修改。用戶修改好數(shù)據(jù)以后上傳至服務(wù)器供用戶下次提取記錄。用戶通過顯示記錄頁面,進(jìn)行文檔的轉(zhuǎn)換操作,得到需要的文檔。結(jié)構(gòu)設(shè)計(jì)論文格式化系統(tǒng)主架構(gòu)采用界面——中間件——數(shù)據(jù)庫這樣的三層結(jié)構(gòu)。如圖3所示:客戶端(javaScript+html客戶端(javaScript+html)中間件(JSP+Servlet)數(shù)據(jù)庫(mysql5.0)用戶界面業(yè)務(wù)邏輯數(shù)據(jù)邏輯圖3論文格式化系統(tǒng)結(jié)構(gòu)圖業(yè)務(wù)邏輯業(yè)務(wù)邏輯注冊請求(register.jsp)登錄請求(login.jsp)上傳請求(index.jsp)記錄顯示頁面(showRecord.jsp)轉(zhuǎn)換請求(action.Conversion.java)結(jié)果頁面(result.jsp)錯(cuò)誤頁面(error.jsp)數(shù)據(jù)邏輯注冊動(dòng)作(data.RegAction.java)登錄動(dòng)作(data.LoginAction)上傳動(dòng)作(data.Upload.java)顯示記錄動(dòng)作(data.showRecord.jva)提取動(dòng)作(data.FileProcess.java)轉(zhuǎn)換動(dòng)作(data.Conversion.java)注冊驗(yàn)證(action.Check.java)圖4中間件設(shè)計(jì)①用戶在register.jsp進(jìn)行注冊操作,填寫注冊信息過程中,數(shù)據(jù)會(huì)被發(fā)送到后臺(tái)使用action.Check,java進(jìn)行驗(yàn)證,并即時(shí)給出結(jié)果,注冊請求會(huì)被發(fā)送到data.RegAction.java進(jìn)行處理,主要是數(shù)據(jù)庫的操作,最終處理結(jié)果被轉(zhuǎn)發(fā)到result.jsp,如果有非法操作等錯(cuò)誤則轉(zhuǎn)發(fā)到error.jsp頁面,并給出詳細(xì)說明。②用戶通過登錄頁面login.jsp將登錄信息發(fā)送到data.LoginAction進(jìn)行具體登錄操作,例如設(shè)置會(huì)話屬性,同樣的最終處理結(jié)果被轉(zhuǎn)發(fā)到result.jsp,如果有非法操作等錯(cuò)誤則轉(zhuǎn)發(fā)到error.jsp頁面,并給出詳細(xì)說明。③用戶如果登錄,就可以在index.jsp編輯文檔數(shù)據(jù),然后通過上傳按鈕發(fā)送數(shù)據(jù)上傳請求給data.Upload.java,上傳結(jié)果直接在index.jsp頁面提示,如果有非法操作等錯(cuò)誤則轉(zhuǎn)發(fā)到error.jsp頁面,并給出詳細(xì)說明。④如果用戶通過showRecord.jsp頁面顯示已經(jīng)保存在服務(wù)器上的記錄,實(shí)際的數(shù)據(jù)處理過程是由data.ShowRecord.java實(shí)現(xiàn),showRecord.jsp只負(fù)責(zé)呈現(xiàn)結(jié)果給用戶看。如果有非法操作等錯(cuò)誤則轉(zhuǎn)發(fā)到error.jsp頁面,并給出詳細(xì)說明。⑤如果用戶發(fā)出轉(zhuǎn)換請求,action.Conversion.java通過用戶的請求參數(shù),調(diào)用相應(yīng)的轉(zhuǎn)換對象data.ConversionDoc.java或者data.ConversionPdf.java處理用戶的轉(zhuǎn)換請求。設(shè)計(jì)思想前臺(tái)使用JavaScript和JSP與用戶進(jìn)行交互,并結(jié)合Ajax技術(shù),給使用者更好的用戶體驗(yàn)。后臺(tái)使用JSP+Servlet,使用JSP處理業(yè)務(wù)邏輯,Servlet來處理數(shù)據(jù)邏輯,實(shí)現(xiàn)了良好的分層結(jié)構(gòu),便于擴(kuò)展和維護(hù)。數(shù)據(jù)庫設(shè)計(jì)3.3.1數(shù)據(jù)庫需求分析本系統(tǒng)僅僅需要簡單的用戶管理,提供用戶的注冊,用戶的登錄,以及保存用戶上傳到服務(wù)器上的數(shù)據(jù)。3.3.2數(shù)據(jù)庫關(guān)系設(shè)計(jì)通過以上的需求分析,設(shè)計(jì)出數(shù)據(jù)庫的邏輯結(jié)構(gòu)圖,從這種邏輯結(jié)構(gòu)有可以建立數(shù)據(jù)庫的物理結(jié)構(gòu)即表結(jié)構(gòu)。根據(jù)需求設(shè)計(jì)出兩個(gè)數(shù)據(jù)表,分別是:用戶信息表(user),用戶記錄表(record)其結(jié)構(gòu)及關(guān)系如圖5所示。圖5數(shù)據(jù)表關(guān)系圖3.3.3數(shù)據(jù)庫邏輯設(shè)計(jì)確定了數(shù)據(jù)庫的邏輯關(guān)系和數(shù)據(jù)結(jié)構(gòu)之后,進(jìn)一步將以上所述的八個(gè)數(shù)據(jù)表由概念結(jié)構(gòu)轉(zhuǎn)化為數(shù)據(jù)庫系統(tǒng)所支持的實(shí)際數(shù)據(jù)模型,也就是數(shù)據(jù)庫的邏輯結(jié)構(gòu)。表3–1所示為用戶信息表(user),記錄了用戶的信息。表=3\*Arabic3–=1\*Arabic1user列名數(shù)據(jù)類型長度Id(主鍵)Int11userNameInt11passwordvarchar20nicknamevarchar20emailvarchar20realnamevarchar20sexvarchar20provincevarchar20cityvarchar20birthdayvarchar20regTimedatetime表3–2所示為歷史記錄表(record),記錄了使用該系統(tǒng)的企業(yè)內(nèi)部各部門的信息。表=3\*Arabic3–=2\*Arabic2record列名數(shù)據(jù)類型長度id(主鍵)Int11userIdInt11recordPathvarchar40recordDatedatetime其中record表的userId與user表的id關(guān)聯(lián)。前臺(tái)界面的設(shè)計(jì)首頁的設(shè)計(jì)圖6首頁當(dāng)用戶第一次打開本系統(tǒng)的時(shí)候首先進(jìn)入的將是此頁面,很簡介的界面,淺顯易懂,已經(jīng)有賬號的用戶可以單擊“登錄”按鈕,將轉(zhuǎn)入登錄界面(圖7),進(jìn)行登錄。登錄頁面的設(shè)計(jì)圖7登錄頁面用戶不存在頁面的設(shè)計(jì)輸入用戶名和密碼即可點(diǎn)登錄,如果用戶不存在將轉(zhuǎn)入用戶不存在頁面(圖8)圖8用戶不存在密碼錯(cuò)誤頁面的設(shè)計(jì)如果密碼錯(cuò)誤,將進(jìn)入密碼錯(cuò)誤頁面(圖9)圖9密碼錯(cuò)誤登錄成功頁面的設(shè)計(jì)用戶名和密碼都正確的話,將進(jìn)入登錄成功頁面(圖10)圖10登錄完成然后可以直接提取保存的記錄或者直接進(jìn)入首頁進(jìn)行文檔內(nèi)容的輸入。注冊頁面的設(shè)計(jì)如果用戶第一次使用本系統(tǒng),那么將進(jìn)入注冊頁面注冊一個(gè)賬號才能使用,注冊頁面使用了Ajax技術(shù)進(jìn)行數(shù)據(jù)的驗(yàn)證,比如用戶名是否已經(jīng)存在或者用戶郵箱重復(fù),可以不提交,只要輸入完,鼠標(biāo)點(diǎn)擊另一行,驗(yàn)證結(jié)果就會(huì)顯示在右邊(如圖11)圖11注冊頁面注冊成功頁面的設(shè)計(jì)當(dāng)用戶注冊成功將轉(zhuǎn)到注冊成功頁面(圖12)圖12成功注冊提取或顯示記錄頁面的設(shè)計(jì)當(dāng)用戶登錄以后可以進(jìn)入提取或顯示記錄的頁面,進(jìn)行提取記錄或者轉(zhuǎn)換文檔的操作(圖13)圖13顯示記錄后臺(tái)的編寫數(shù)據(jù)庫操作模塊本系統(tǒng)中,所有連接數(shù)據(jù)庫進(jìn)行操作,均使用一個(gè)DbConnBean類(圖14),每當(dāng)要使用數(shù)據(jù)庫之前,需要初始化此類例如:data.DbConnBeancon=newdata.DbConnBean(DBDriver,ConnStr,MyUser,MyPassword);其中輸入?yún)?shù)分別是驅(qū)動(dòng)類型,連接字符串,用戶名,密碼。然后使用DbConnBean對象con進(jìn)行數(shù)據(jù)庫的操作,DbConnBean中四個(gè)函數(shù),對應(yīng)數(shù)據(jù)庫的四種操作,只需要傳入SQL語句,即可進(jìn)行操作。publicResultSetexecuteQuery(Stringsql)函數(shù),它是數(shù)據(jù)庫查詢操作,返回一個(gè)結(jié)果集,如果此操作有異常發(fā)生,將打印在控制臺(tái)或輸出到日志文件;publicvoidexecuteUpdate(Stringsql)函數(shù),它是數(shù)據(jù)更新操作,無返回值,如果此操作有異常發(fā)生,將打印在控制臺(tái)或輸出到日志文件;publicbooleanexecuteInsert(Stringsql)函數(shù),它是數(shù)據(jù)插入操作,插入成功返回true,插入失敗返回false,如果此操作有異常發(fā)生,將打印在控制臺(tái)或輸出到日志文件;

publicbooleanexecuteDelete(Stringsql)函數(shù),它是數(shù)據(jù)刪除操作,刪除成功返回true,插入失敗返回false,如果此操作有異常發(fā)生,將打印在控制臺(tái)或輸出到日志文件;圖14數(shù)據(jù)庫操作用戶登錄模塊用戶的登錄請求將被發(fā)送到LoginAction頁面(圖15),用戶名和密碼將作為參數(shù)一起發(fā)送。LoginAction接受用戶名和密碼,并查詢數(shù)據(jù)庫判斷用戶名和密碼是否正確,如果正確就創(chuàng)建會(huì)話,并設(shè)置會(huì)話屬性,頁面轉(zhuǎn)到index.jsp中。如果用戶名錯(cuò)誤或者密碼錯(cuò)誤,就將頁面轉(zhuǎn)到result.jsp中,并給出提示信息。圖15登錄請求注冊及驗(yàn)證模塊用戶使用注冊頁面register.jsp的過程中,每輸入完一項(xiàng),客戶端會(huì)把數(shù)據(jù)發(fā)送到Check(圖16)中進(jìn)行檢查,檢查結(jié)果將以XML格式發(fā)回客戶端,并立即顯示出來。當(dāng)用戶將數(shù)據(jù)輸入完畢,點(diǎn)擊注冊按鈕以后,請求被發(fā)送到RegAction(圖17)中,進(jìn)行數(shù)據(jù)庫插入操作,如果插入成功,將頁面轉(zhuǎn)到注冊成功頁面(圖12)。圖16注冊效驗(yàn)圖17注冊動(dòng)作記錄上傳與下載模塊當(dāng)用戶在首頁點(diǎn)擊提交按鈕的時(shí)候,客戶端的數(shù)據(jù)將以XML形式被組織起來發(fā)往Upload(圖18),Upload再調(diào)用FileProcess(圖19)對象的publicbooleanfileSave(byte[]data,Stringname,Stringdir)函數(shù)將數(shù)據(jù)保存到服務(wù)器上,保存成功就將記錄的文件名寫入數(shù)據(jù)庫,否則提示用戶提交失敗。圖18上傳動(dòng)作圖19文件上傳與下載動(dòng)作當(dāng)用戶點(diǎn)擊“提取記錄”的時(shí)候,此請求將被發(fā)送到index.jsp,index.jsp根據(jù)接收的文件名參數(shù)調(diào)用FileProcess(圖19)的publicbyte[]fileDown(Stringpath)函數(shù)將記錄以XML形式下載到客戶端,客戶端使用javaScript腳本將數(shù)據(jù)填充到輸入框中。文檔轉(zhuǎn)換模塊當(dāng)用戶點(diǎn)擊“轉(zhuǎn)換成word文檔”或者“轉(zhuǎn)換成pdf文檔”的時(shí)候,請求將被發(fā)送到action.Conversion(圖20)中,action.Conversion根據(jù)需要轉(zhuǎn)換類型再調(diào)用相應(yīng)的轉(zhuǎn)換對象data.ConversionDoc(圖21)或者data.ConversionPdf(圖22)進(jìn)行轉(zhuǎn)換。圖20轉(zhuǎn)換請求1.轉(zhuǎn)換成word文檔:圖21轉(zhuǎn)換成word文檔將XML文檔轉(zhuǎn)換成word支持的rtf格式,使用了javax.xml.transform的transform()函數(shù),使用xml文件和xslt模板做輸入,輸出為rtf格式的文檔,并以流的形式發(fā)送到客戶端,讓用戶下載,代碼如下: publicvoidconversion()throwsIOException{ //TODO自動(dòng)生成方法存根 response.setContentType("Application/msword;charset=UTF-8"); response.setHeader("Content-Disposition","attachment;filename="+newFilename(fileName)); OutputStreamout=response.getOutputStream(); StreamSourcesr=newStreamSource(newFile(fileDir+fileName)); StreamResultrs=newStreamResult(out); TransformerFactoryfactory=TransformerFactory.newInstance(); TemplatestempXsl=null; try{ tempXsl=factory.newTemplates(newStreamSource(newFile(confDir+xslt))); Transformertf=tempXsl.newTransformer(); tf.transform(sr,rs); out.flush(); out.close(); } catch(TransformerConfigurationExceptione){ System.out.println("xslt嚴(yán)重配置錯(cuò)誤:"+e.getMessage()); out.close(); out=null; } catch(TransformerExceptionte){ System.out.println("轉(zhuǎn)換過程發(fā)生異常:"+te.getMessage()); out.close(); out=null; } }2.轉(zhuǎn)換成pdf文檔:圖22轉(zhuǎn)換成PDF文檔將XML文檔轉(zhuǎn)換成PDF格式,使用了開源項(xiàng)目ApacheFOP來進(jìn)行轉(zhuǎn)換,要得到PDF文檔,需要兩步(圖23):圖23XML文檔轉(zhuǎn)換成PDF流程1)用XSLT樣式表將XML文檔轉(zhuǎn)換為由XSL-FO元素構(gòu)成的文件。要執(zhí)行這一轉(zhuǎn)換,只需用調(diào)用XSLT處理器。

2)用某種顯示引擎將XSL-FO元素轉(zhuǎn)換為PDF文件。本系統(tǒng)首先使用javax.xml.transform的transform()函數(shù),使用XML文件和XSLT模板做輸入,輸出為XSL-FO元素構(gòu)成的文檔,然后使用FOP引擎將XSL-FO文件轉(zhuǎn)換成用戶需要的PDF文件,并以流的形式發(fā)送到客戶端,讓用戶下載,源代碼如下: @Override publicvoidconversion()throwsIOException{ //TODO自動(dòng)生成方法存根 response.setContentType("Application/msword;charset=UTF-8"); response.setHeader("Content-Disposition","attachment;filename="+newFilename(fileName)); OutputStreamout=response.getOutputStream(); byte[]temp; ByteArrayOutputStreambos=newByteArrayOutputStream(); StreamSourcesr=newStreamSource(newFile(fileDir+fileName)); StreamResultrs=newStreamResult(bos); TransformerFactoryfactory=TransformerFactory.newInstance(); TemplatestempXsl=null; try{ tempXsl=factory.newTemplates(newStreamSource(newFile(confDir+xslt))); Transformertf=tempXsl.newTransformer(); tf.setOutputProperty(OutputKeys.ENCODING,"gb2312"); tf.transform(sr,rs); }catch(TransformerConfigurationExceptione){ System.out.println("xslt嚴(yán)重配置錯(cuò)誤:"+e.getMessage()); }catch(TransformerExceptionte){ System.out.println("fo生成過程發(fā)生異常:"+te.getMessage()); } temp=bos.toByteArray(); // System.out.println(newString(temp));測試代碼 try{ Driverdriver=newDriver(); Loggerlogger=newConsoleLogger(ConsoleLogger.LEVEL_INFO); driver.setLogger(logger); org.apache.fop.messaging.MessageHandler.setScreenLogger(logger); driver.setRenderer(Driver.RENDER_PDF); InputStreaminput=newByteArrayInputStream(temp); driver.setInputSource(newInputSource(input)); driver.setOutputStream(out); Optionsoptions=newOptions(newFile(confDir+"userconfig.xml")); driver.run(); out.flush(); out.close(); }catch(IOExceptione){ out.close(); System.out.println("生成pdf發(fā)生異常"+e.getMessage()); }catch(org.apache.fop.apps.FOPExceptione){ out.close(); System.out.println("生成pdf發(fā)生異常"+e.getMessage()); } }XSLT模板本系統(tǒng)兩種文檔的生成,都是建立在模板的基礎(chǔ)上,此模板為XSLT文件,遵循XSLT1.0標(biāo)準(zhǔn)。XSLT簡介XSLT是由XSL(ExtensibleStylesheetLanguage)發(fā)展而來的,XSLT是一種基于XML的語言,用于將一類XML文檔轉(zhuǎn)換成另一種XML文檔。如果是一個(gè)熟悉XML編程的開發(fā)人員,他可以自己手工編寫自己的XSLT文件,但是對用戶來說,要求太高,因此,我們使用了軟件AltovaStyleVision來進(jìn)行輔助設(shè)計(jì)XSLT模板。它使用所見即所得的方式來進(jìn)行編寫,首先在Design窗口(圖24)中進(jìn)行排版與設(shè)計(jì),可以在RTFPreview窗口(圖25)預(yù)覽轉(zhuǎn)換生成的rtf文檔,或點(diǎn)擊PDFPreview生成PDF模板進(jìn)行預(yù)覽。圖24模板編輯圖25模板預(yù)覽當(dāng)設(shè)計(jì)完成以后,即可導(dǎo)出生成RTF的XSLT文件和生成PDF的XSLT文件。web.xml文件的配置在Servlet啟動(dòng)時(shí)將讀入web.xml文件中的初始化參數(shù),在本系統(tǒng)中用于數(shù)據(jù)庫的連接和XSLT模板的存放路徑以及用戶數(shù)據(jù)的存放路徑實(shí)現(xiàn)可配置性。<context-param> <param-name>fileDir</param-name> <param-value>d:/data/data/</param-value>這里配置用戶數(shù)據(jù)的存放路徑 </context-param> <context-param> <param-name>confDir</param-name> <param-value>d:/data/conf/</param-value>這里配置XSLT模板的存放路徑 </context-param> <context-param> <param-name>DBDriver</param-name> <param-value>org.gjt.mm.mysql.Driver</param-value>這里配置數(shù)據(jù)庫的連接驅(qū)動(dòng) </context-param> <context-param> <param-name>ConnStr</param-name> <param-va

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論