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

下載本文檔

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

文檔簡介

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

publicbooleanexecuteDelete(Stringsql)函數(shù),它是數(shù)據(jù)刪除操作,刪除成功返回true,插入失敗返回false,如果此操作有異常發(fā)生,將打印在控制臺或輸出到日志文件;圖14數(shù)據(jù)庫操作用戶登錄模塊用戶的登錄請求將被發(fā)送到LoginAction頁面(圖15),用戶名和密碼將作為參數(shù)一起發(fā)送。LoginAction接受用戶名和密碼,并查詢數(shù)據(jù)庫判斷用戶名和密碼是否正確,如果正確就創(chuàng)建會話,并設(shè)置會話屬性,頁面轉(zhuǎn)到index.jsp中。如果用戶名錯誤或者密碼錯誤,就將頁面轉(zhuǎn)到result.jsp中,并給出提示信息。圖15登錄請求注冊及驗證模塊用戶使用注冊頁面register.jsp的過程中,每輸入完一項,客戶端會把數(shù)據(jù)發(fā)送到Check(圖16)中進行檢查,檢查結(jié)果將以XML格式發(fā)回客戶端,并立即顯示出來。當用戶將數(shù)據(jù)輸入完畢,點擊注冊按鈕以后,請求被發(fā)送到RegAction(圖17)中,進行數(shù)據(jù)庫插入操作,如果插入成功,將頁面轉(zhuǎn)到注冊成功頁面(圖12)。圖16注冊效驗圖17注冊動作記錄上傳與下載模塊當用戶在首頁點擊提交按鈕的時候,客戶端的數(shù)據(jù)將以XML形式被組織起來發(fā)往Upload(圖18),Upload再調(diào)用FileProcess(圖19)對象的publicbooleanfileSave(byte[]data,Stringname,Stringdir)函數(shù)將數(shù)據(jù)保存到服務(wù)器上,保存成功就將記錄的文件名寫入數(shù)據(jù)庫,否則提示用戶提交失敗。圖18上傳動作圖19文件上傳與下載動作當用戶點擊“提取記錄”的時候,此請求將被發(fā)送到index.jsp,index.jsp根據(jù)接收的文件名參數(shù)調(diào)用FileProcess(圖19)的publicbyte[]fileDown(Stringpath)函數(shù)將記錄以XML形式下載到客戶端,客戶端使用javaScript腳本將數(shù)據(jù)填充到輸入框中。文檔轉(zhuǎn)換模塊當用戶點擊“轉(zhuǎn)換成word文檔”或者“轉(zhuǎn)換成pdf文檔”的時候,請求將被發(fā)送到action.Conversion(圖20)中,action.Conversion根據(jù)需要轉(zhuǎn)換類型再調(diào)用相應(yīng)的轉(zhuǎn)換對象data.ConversionDoc(圖21)或者data.ConversionPdf(圖22)進行轉(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自動生成方法存根 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嚴重配置錯誤:"+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格式,使用了開源項目ApacheFOP來進行轉(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自動生成方法存根 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嚴重配置錯誤:"+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標準。XSLT簡介XSLT是由XSL(ExtensibleStylesheetLanguage)發(fā)展而來的,XSLT是一種基于XML的語言,用于將一類XML文檔轉(zhuǎn)換成另一種XML文檔。如果是一個熟悉XML編程的開發(fā)人員,他可以自己手工編寫自己的XSLT文件,但是對用戶來說,要求太高,因此,我們使用了軟件AltovaStyleVision來進行輔助設(shè)計XSLT模板。它使用所見即所得的方式來進行編寫,首先在Design窗口(圖24)中進行排版與設(shè)計,可以在RTFPreview窗口(圖25)預(yù)覽轉(zhuǎn)換生成的rtf文檔,或點擊PDFPreview生成PDF模板進行預(yù)覽。圖24模板編輯圖25模板預(yù)覽當設(shè)計完成以后,即可導(dǎo)出生成RTF的XSLT文件和生成PDF的XSLT文件。web.xml文件的配置在Servlet啟動時將讀入web.xml文件中的初始化參數(shù),在本系統(tǒng)中用于數(shù)據(jù)庫的連接和XSLT模板的存放路徑以及用戶數(shù)據(jù)的存放路徑實現(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ū)動 </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)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論