版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
PAGE分类号:TP315UDC:D10621-408-(2007)5746-0密级:公开编号:2003215065八年经验专业指导毕业设计需要全套设计请联系:731767310学位论文论文格式化系统——后台模块的设计与实现论文作者姓名:申请学位专业:网络工程申请学位类别:工学学士论文提交日期:论文格式化系统——后台模块的设计与实现摘要论文的格式修改是一件很麻烦的事情,一篇论文在定稿以前为了让格式达到标准,需要修改很多次,浪费了大量时间。本系统的设计初衷就是为了解决论文书写格式的规范化,方便学者论文格式的自动生成。本系统是基于Java平台的Web应用程序。采用JSP作为后台开发语言,HTML和JavaScript作为前台开发语言,MYSQL5.0作为后台数据库,系统具有稳定性高、可移植性强等特点。本系统中文档数据的传输和存储均使用XML形式,以XML作为数据的中间状态,便于以后进行系统的扩展。完成了论文的格式化,生成格式化后的word文件和PDF文件,并提供给用户进行下载。本系统设计过程中使用了当前比较流行的技术,比如使用AJAX技术来进行注册验证,系统架构使用B/S模式进行设计。关键词:格式化;移植性;数据库TheEssayFormattingSystem——Server-sideDesignandImplementationAbstractModificationtheformatofthesisisalwaysatroublesomething.Inordertomakethethesismatchtheformatbeforethefinalversionortextneedmanytimesamending,whichisawasteoftime.Thissystemismeantosolvetheproblemwhichcanmodifytheformatofthethesisautomatically,andcreatetheformateasily.ThissystemisawebapplicationbasedonJavaplatform.JSPisthebackgroundprogramlanguagewhilehtmlandJavaScriptastheforestageprogramlanguage.ThesystemisstableandcanbereplantedbyusingtheMYSQL5.0asthedatabase.Thetransmissionandstorageofthedocumentinthesystemareallusingxmlform.Usingthexmlasthemiddlestateofthedataisconvenienceforthesystemexpending,aftertheformatofthethesiswillcreateaformattedwordorPDFdocument.Thissystemisdesignedbyusingthemostpopulartechnology,suchasAJAXtechniquetocheckregistration.Thissystemisdesignedbasedonb/smode.Keywords:format;replant;database目录论文总页数:27页1 引言 11.1 课题背景 11.2 国内外研究现状 11.3 本课题研究的意义 11.4 本课题的研究方法 12 论文格式化系统总体设计 22.1 论文格式化系统的需求分析 22.1.1 功能需求 22.1.2 性能需求 22.2 论文格式化系统选型 22.2.1 设计语言的选择 32.2.2 数据库的选择 42.2.3 开发工具的选择 52.2.4 文档转换技术的选择 52.3 环境搭建 62.3.1 安装jdk 62.3.2 安装Tomcat 62.3.3 安装Mysql 72.3.4 安装JDBC驱动程序: 73 论文格式化系统详细设计 73.1 系统功能模块和结构设计 73.2 设计思想 93.3 数据库设计 93.3.1数据库需求分析 93.3.2数据库实体关系设计 93.3.3数据库逻辑设计 103.4 前台界面的设计 113.4.1 首页的设计 113.4.2 登录页面的设计 123.4.3 用户不存在页面的设计 123.4.4 密码错误页面的设计 123.4.5 登录成功页面的设计 123.4.6 注册页面的设计 133.4.7 注册成功页面的设计 133.4.8 提取或显示记录页面的设计 133.5 后台的编写 143.5.1 数据库操作模块 143.5.2 用户登录模块 153.5.3 注册及验证模块 153.5.4 记录上传与下载模块 163.5.5 文档转换模块 173.6 xslt模板 213.7 xslt简介 213.8 web.xml文件的配置 23结论 25参考文献 25致谢 26声明 27第27页共27页引言课题背景在人们繁忙的工作环境中,很多资料文件都要形成规范化的文档便于分类和存放,信息化的社会已经将以前手工抄写文档全部用电脑办公平台提供的统一的文档编辑软件所取代,当然所编写的文档的格式也是统一化的,包括文档中内容的字体,字号,标记,页码等等都是统一的。比如美国微软公司的word文档格式,这种格式已经成为了世界的一种标准,全世界通用,再比如Adobe公司的PDF文档格式,也是一种世界标准,是人们常用的一种文档格式。然而在日常的办公中,人们需要在文档编辑软件中编辑文档,需要花费大量的时间和精力来编辑文档的格式,比如字体,字号等等,对于同一类的文档来说,格式都是规范化好了的,但是文档编辑器不可能提供每一个规范好了的模板,因为各个地区或者企业他都有自己的规范,人们需要自己去编辑,这样话就降低了办公的效率,对于个人和企业来说都是在浪费时间,提高了成本。于是聪明的人开始想办法解决这个问题,新的软件由此产生了,涌现出了很多的PDF、word文档的转换软件,他们很强大,不仅可以将PDF转换为word,也可以将word转换成PDF格式,有的也可以转换其他格式的文档,比如将HTML文档转化成PDF文档。国内外研究现状在国外很早就开始进行文档自动化的研究了,但是都是进行底层的文档生成工作,都是提供一个底层平台,用户使用平台提供的API,基于自己的特定目标进行二次开发。很多公司都是使用开源的第三方包,在遵守开源许可证的基础上进行产品开发。本课题研究的意义考虑到高等学府中教师,学生也要写论文,而且所写的论文要保存为特定格式的文档,保证论文的规范化,为此,我们设计了一套系统专门提供给毕业生将论文转化为规范的格式,省去大量的论文编辑时间,提高论文发表的效率,降低论文修改的频率,给同学们带来巨大的方便。我们将系统定位于B/S模式,主要考虑到系统易用性,客户机只需要安装了IE浏览器就可以通过访问网站的形式使用论文格式化系统,只是本系统一大优势。本课题的研究方法通过对业界使用的各种文档转换技术进行比较分析,找到最适合本课题的技术,然后使用选择的技术构建本系统。论文格式化系统总体设计论文格式化系统的需求分析功能需求=1\*GB3①支持用户注册因为用户需要将文档内容保存在服务器上,所以必须实现用户的注册功能。用户需要保存的信息包括用户名、呢称、密码、性别、电子邮件地址、省份、城市、注册时间,用户信息将保存在数据库中。=2\*GB3②支持用户登录用户登录以后才能进行文档的上传以及转换等操作,这就要求保持会话信息。=3\*GB3③支持用户取回记录用户登录以后,可以将服务器上保存的数据取下来,进行再次修改。=4\*GB3④支持用户上传记录用户第一次录入数据,或者是用户将服务器上取回的数据进行修改以后,可以将数据上传至服务器,并且在数据库中添加记录的文件名路径。⑤支持用户转换成word文档用户通过页面的向服务器提交转换成word文档的请求,服务器接受到请求以后,将文档转换成word文档,然后再传送给客户端,供用户下载使用。⑥支持用户转换成PDF文档用户通过页面的向服务器提交转换成PDF文档的请求,服务器接受到请求以后,将文档转换成PDF文档,然后再传送给客户端,供用户下载使用。⑦支持可配置性,便于移植模板的可配置性:针对具体的应用场景,通过修改模板文件,就可以生成合乎用户要求的文档。环境的可配置性:数据库的用户名、密码,以及模板文件的存放路径,用户数据的存放路径,都应该通过配置文件实现。性能需求=1\*GB3①一个用户不能看到其他用户的记录。=2\*GB3②充分考虑易用性和实用性。=3\*GB3③软件应该以B/S架构,界面简单易用。论文格式化系统选型对系统设计语言、后台数据库的选择直接影响到系统在各种平台上运行时性能的好坏,对日后系统性能的扩展具有决定性的作用。因此,论文格式化系统在设计初期做了详细的系统选型。设计语言的选择=1\*Arabic1、JavaServerPage概述JSP(JAVAServerPage)是由Sun公司于1999年6月推出的新技术,是基于JavaServlet以及整个JAVA体系的Web开发技术,能够实现跨平台和兼容各种Web服务器产品,而且还能够把强大的Java服务器应用技术(Server-sideJavaTechnology)有机的融合到HTML网页中去。它是结合markup(HTML或XML)和JAVA代码来处理的一种动态页面。每一页第一次被调用时,通过JSP引擎自动被编译成Servlet,然后被执行,以后每次调用时,执行编译过的Servlet。JSP提供了多种方式访问Javaclass、Servlet、Applets和WebServer,因此,Web应用的功能可以分成多个明确定义功用接口的组件,通过JSP将它们结合在一起。这种模式允许工作分成两部分:组件开发与页面设计和编译(结合一些方法调用)。在这种应用编译模式,使得业务逻辑和数据处理分开。=2\*Arabic2、JSP与ASP的比较JSP与ASP技术非常相似,两者都提供在HTML代码中混合某种程序代码、由语言引擎解释执行程序代码的能力。并且双方都能够为程序员提供组件设计的功能,(ASP使用COM组件、JSP使用JavaBean组件)。两者都是面向Web服务器的技术,客户端浏览器不需要任何附加的软件支持。两者之间主要的区别:①平台和服务器的选择ASP技术主要在微软公司的Windows平台上运行,包括Windows2000、WindowsXP和Windows2003,并且搭配其WEB服务器IIS。但是,在其他的平台运行时,不是性能低落,就是不支持。JSP技术主要运行在操作系统上的一个JavaVirtualMachine虚拟机器上,因此,它能够跨越所有的平台。并且能够搭配现有的WEB服务器:Apache、IIS、Tomcat等等。因此,JSP技术在跨平台的表现比ASP来得更有弹性。②语法结构两者都使用相同的标记符号作为程序的区段范围。不同的是,标记符号之间ASP使用JavaScript和VBScript语言,而JSP使用Java语言,Java是有严格规划、强大且易扩充的语言,且提供强大的异常事件处理机制。远优于VBScript语言。③语法的延展性ASP与JSP都是使用标签和ScriptingLanguage来制作动态WEB网页,JSP能够让程序员自由的扩展JSP标签来应用,所以程序员能充分的利用与XML兼容的标签技术强大的功能,大大的减低了对Java语法的依赖,并且也可以利用XML强大的功能,做到数据、文件格式的标准化。④执行性能JSP除了在一开始加载的时间会比较久之外,之后的表现就远远比ASP的表现来得好。原因在于:JSP在一开始接受到请求时,会产生一份Servlet实体(instance),它会先被暂存在内存中,一般称之为持续(Persistence),当再有相同的请求时,这实体会产生一个线程来服务它,如果过了一段时间都不再用到此实体时,Container会自动将其释放,至于时间的长短,通常都可以在Container上自行设定。JSP的执行过程如图1所示:浏览器浏览器IENetscape23JSPPage产生Servlet经编译Servlet1Request4Response图1JSP的执行过程而ASP在每次接收到请求时,都必须重新编译。因此,JSP的执行比每次都要编译执行的ASP要快,尤其是程序中存在循环操作时,JSP的速度要快上1到2倍。综上所述,基于JSP语言在多方面的优点,CRM系统在进行后台编码时采用了发展前景良好的JSP语言。数据库的选择本系统的数据库选用的是MYSQL。首先,它提供了以Web标准为基础的扩展数据库编程功能,可支持Web的分析,对数据的Web访问。其次,它具有良好的移植性,可以移植到几乎所有平台。最后,它是免费的,极大的节约了成本。开发工具的选择Eclipse是一个很让人着迷的开发环境,它提供的核心框架和可扩展的插件机制给广大的程序员提供了无限的想象和创造空间。目前网上流传相当丰富且全面的开发工具方面的插件,但是Eclipse已经超越了开发环境的概念,可以想象Eclipse将成为未来的集成的桌面环境。目前的Eclipse本身就具备资源管理和外部程序的功能,加上无所不能的插件,将构成一个丰富多彩的工作环境而不仅仅是一个IDE。因此,在进行论文格式化系统编码时选用了eclipse3.2。前台页面设计,使用了DreamweaverMX2004。文档转换技术的选择WORD文档生成技术分析:1.使用iText进行WORD文档直接的生成,这种技术是比较成熟的,但是它的生成文档操作,需要对文档的结构进行一步步的构造,格式有轻微的变动,都必须通过编程进行,不能使用模板进行文档的生成。2.使用word提供的COM自动化接口控制word生成文档,这种方法靠word进程实际完成文件生成工作,而word并非设计为在服务器端处理并发调用,所以这种方法只适合单机应用。另外,如果要生成比较复杂的word文件,相应的代码会非常烦琐,排版和调试也需要花大量时间。3.利用Word对html的支持,制作HTML文件,并设置其ContentType为"application/msword",使浏览器调用word打开,这种方法的致命问题是html文档中无法保存二进制数据,比如图片,如果在服务器端生成一堆文件,即难以在浏览器中显示,也无法让用户直接下载。4.基于WordML来生成word文件。WordML是微软为Word设计的XML架构,其完整语法可以在MSDN上找到。按照这个语法生成xml文件,可以在文档中随意得到各种word支持的格式。因为WordML是比较新的技术,如果生成这种文件,会导致较老的版本比如office97不能打开,所以这种方法的缺陷也比较明显。5.使用JasperReports等报表生成工具生成word文档,JasperReports强项在于报表的生成,生成的word文档都是带状的,每一页的关系不是很紧密,它是以整个报表的各部分来进行设计的,而我们生成的文档是以一篇文章的结构来组织的,所以这种方式不适合。6.直接使用XML+XSLT方式解决,最终生成RTF格式的word文档,我们只需要将数据放在XML文件中,以XSLT文件作为模板来进行格式的定制。word文档生成技术的选择:经过对六种技术进行比较后,我们选择第六种技术进行word文档的生成。PDF文档生成技术比较分析:1.使用iText技术进行PDF文档的生成,同使用iText生成word文档一样,它是对文档中的每一个元素都使用编程接口进行生成,不支持模板方式,生成文档很复杂。2.使用JasperReports等报表生成工具生成PDF文档,JasperReports强项在于报表的生成,生成的word文档都是带状的,每一页的关系不是很紧密,它是以整个报表的各部分来进行设计的,而我们生成的文档是以一篇文章的结构来组织的,所以这种方式不适合。3.使用FOP技术生成PDF文档,这种技术将XSL-FO元素转换成PDF文档,而XSL-FO元素可以通过XML+XSLT方式来生成,我们只需要将数据放在XML文件中,以XSLT文件作为模板来进行格式的定制。PDF文档生成技术的选择:经过对三种技术进行比较,我们选择第三种技术进行PDF文档的生成。环境搭建安装JDK在设计论文格式化系统时使用的是jdk1.5.0版本,安装路径为:C:\jdk1.5.0,从【我的电脑】→【属性】→【高级】→【环境变量】→【系统变量】→【新建】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系统使用的Tomcat是5.5版本,安装路径为:D:\ProgramFiles\ApacheSoftwareFoundation\Tomcat5.5,在安装完成之后,进行了以下设置: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驱动程序:在MYSQL官方网站下载mysql5.0.18版本对应的JDBC驱动程序jar包,将其放入tomcat安装目录的\common\lib到此,设计论文格式化系统的设计环境搭建完成。论文格式化系统详细设计系统详细设计系统流程在本系统中,角色只有用户一种,用户只有登录以后才具有各个操作的权限。该系统的系统流程如图2所示:图2论文格式化系统流程图流程描述:当用户第一次使用这个系统的时候,首先会注册一个账号。用户使用已经存在的账号登录系统,在这个过程中,如果发生错误,将会转到指定的错误页面。如果登录成功,用户可以直接进入编辑页面进行编辑,或者直接提取以前的记录进行修改。用户修改好数据以后上传至服务器供用户下次提取记录。用户通过显示记录页面,进行文档的转换操作,得到需要的文档。结构设计论文格式化系统主架构采用界面——中间件——数据库这样的三层结构。如图3所示:客户端(javaScript+html客户端(javaScript+html)中间件(JSP+Servlet)数据库(mysql5.0)用户界面业务逻辑数据逻辑图3论文格式化系统结构图业务逻辑业务逻辑注册请求(register.jsp)登录请求(login.jsp)上传请求(index.jsp)记录显示页面(showRecord.jsp)转换请求(action.Conversion.java)结果页面(result.jsp)错误页面(error.jsp)数据逻辑注册动作(data.RegAction.java)登录动作(data.LoginAction)上传动作(data.Upload.java)显示记录动作(data.showRecord.jva)提取动作(data.FileProcess.java)转换动作(data.Conversion.java)注册验证(action.Check.java)图4中间件设计①用户在register.jsp进行注册操作,填写注册信息过程中,数据会被发送到后台使用action.Check,java进行验证,并即时给出结果,注册请求会被发送到data.RegAction.java进行处理,主要是数据库的操作,最终处理结果被转发到result.jsp,如果有非法操作等错误则转发到error.jsp页面,并给出详细说明。②用户通过登录页面login.jsp将登录信息发送到data.LoginAction进行具体登录操作,例如设置会话属性,同样的最终处理结果被转发到result.jsp,如果有非法操作等错误则转发到error.jsp页面,并给出详细说明。③用户如果登录,就可以在index.jsp编辑文档数据,然后通过上传按钮发送数据上传请求给data.Upload.java,上传结果直接在index.jsp页面提示,如果有非法操作等错误则转发到error.jsp页面,并给出详细说明。④如果用户通过showRecord.jsp页面显示已经保存在服务器上的记录,实际的数据处理过程是由data.ShowRecord.java实现,showRecord.jsp只负责呈现结果给用户看。如果有非法操作等错误则转发到error.jsp页面,并给出详细说明。⑤如果用户发出转换请求,action.Conversion.java通过用户的请求参数,调用相应的转换对象data.ConversionDoc.java或者data.ConversionPdf.java处理用户的转换请求。设计思想前台使用JavaScript和JSP与用户进行交互,并结合Ajax技术,给使用者更好的用户体验。后台使用JSP+Servlet,使用JSP处理业务逻辑,Servlet来处理数据逻辑,实现了良好的分层结构,便于扩展和维护。数据库设计3.3.1数据库需求分析本系统仅仅需要简单的用户管理,提供用户的注册,用户的登录,以及保存用户上传到服务器上的数据。3.3.2数据库关系设计通过以上的需求分析,设计出数据库的逻辑结构图,从这种逻辑结构有可以建立数据库的物理结构即表结构。根据需求设计出两个数据表,分别是:用户信息表(user),用户记录表(record)其结构及关系如图5所示。图5数据表关系图3.3.3数据库逻辑设计确定了数据库的逻辑关系和数据结构之后,进一步将以上所述的八个数据表由概念结构转化为数据库系统所支持的实际数据模型,也就是数据库的逻辑结构。表3–1所示为用户信息表(user),记录了用户的信息。表=3\*Arabic3–=1\*Arabic1user列名数据类型长度Id(主键)Int11userNameInt11passwordvarchar20nicknamevarchar20emailvarchar20realnamevarchar20sexvarchar20provincevarchar20cityvarchar20birthdayvarchar20regTimedatetime表3–2所示为历史记录表(record),记录了使用该系统的企业内部各部门的信息。表=3\*Arabic3–=2\*Arabic2record列名数据类型长度id(主键)Int11userIdInt11recordPathvarchar40recordDatedatetime其中record表的userId与user表的id关联。前台界面的设计首页的设计图6首页当用户第一次打开本系统的时候首先进入的将是此页面,很简介的界面,浅显易懂,已经有账号的用户可以单击“登录”按钮,将转入登录界面(图7),进行登录。登录页面的设计图7登录页面用户不存在页面的设计输入用户名和密码即可点登录,如果用户不存在将转入用户不存在页面(图8)图8用户不存在密码错误页面的设计如果密码错误,将进入密码错误页面(图9)图9密码错误登录成功页面的设计用户名和密码都正确的话,将进入登录成功页面(图10)图10登录完成然后可以直接提取保存的记录或者直接进入首页进行文档内容的输入。注册页面的设计如果用户第一次使用本系统,那么将进入注册页面注册一个账号才能使用,注册页面使用了Ajax技术进行数据的验证,比如用户名是否已经存在或者用户邮箱重复,可以不提交,只要输入完,鼠标点击另一行,验证结果就会显示在右边(如图11)图11注册页面注册成功页面的设计当用户注册成功将转到注册成功页面(图12)图12成功注册提取或显示记录页面的设计当用户登录以后可以进入提取或显示记录的页面,进行提取记录或者转换文档的操作(图13)图13显示记录后台的编写数据库操作模块本系统中,所有连接数据库进行操作,均使用一个DbConnBean类(图14),每当要使用数据库之前,需要初始化此类例如:data.DbConnBeancon=newdata.DbConnBean(DBDriver,ConnStr,MyUser,MyPassword);其中输入参数分别是驱动类型,连接字符串,用户名,密码。然后使用DbConnBean对象con进行数据库的操作,DbConnBean中四个函数,对应数据库的四种操作,只需要传入SQL语句,即可进行操作。publicResultSetexecuteQuery(Stringsql)函数,它是数据库查询操作,返回一个结果集,如果此操作有异常发生,将打印在控制台或输出到日志文件;publicvoidexecuteUpdate(Stringsql)函数,它是数据更新操作,无返回值,如果此操作有异常发生,将打印在控制台或输出到日志文件;publicbooleanexecuteInsert(Stringsql)函数,它是数据插入操作,插入成功返回true,插入失败返回false,如果此操作有异常发生,将打印在控制台或输出到日志文件;
publicbooleanexecuteDelete(Stringsql)函数,它是数据删除操作,删除成功返回true,插入失败返回false,如果此操作有异常发生,将打印在控制台或输出到日志文件;图14数据库操作用户登录模块用户的登录请求将被发送到LoginAction页面(图15),用户名和密码将作为参数一起发送。LoginAction接受用户名和密码,并查询数据库判断用户名和密码是否正确,如果正确就创建会话,并设置会话属性,页面转到index.jsp中。如果用户名错误或者密码错误,就将页面转到result.jsp中,并给出提示信息。图15登录请求注册及验证模块用户使用注册页面register.jsp的过程中,每输入完一项,客户端会把数据发送到Check(图16)中进行检查,检查结果将以XML格式发回客户端,并立即显示出来。当用户将数据输入完毕,点击注册按钮以后,请求被发送到RegAction(图17)中,进行数据库插入操作,如果插入成功,将页面转到注册成功页面(图12)。图16注册效验图17注册动作记录上传与下载模块当用户在首页点击提交按钮的时候,客户端的数据将以XML形式被组织起来发往Upload(图18),Upload再调用FileProcess(图19)对象的publicbooleanfileSave(byte[]data,Stringname,Stringdir)函数将数据保存到服务器上,保存成功就将记录的文件名写入数据库,否则提示用户提交失败。图18上传动作图19文件上传与下载动作当用户点击“提取记录”的时候,此请求将被发送到index.jsp,index.jsp根据接收的文件名参数调用FileProcess(图19)的publicbyte[]fileDown(Stringpath)函数将记录以XML形式下载到客户端,客户端使用javaScript脚本将数据填充到输入框中。文档转换模块当用户点击“转换成word文档”或者“转换成pdf文档”的时候,请求将被发送到action.Conversion(图20)中,action.Conversion根据需要转换类型再调用相应的转换对象data.ConversionDoc(图21)或者data.ConversionPdf(图22)进行转换。图20转换请求1.转换成word文档:图21转换成word文档将XML文档转换成word支持的rtf格式,使用了javax.xml.transform的transform()函数,使用xml文件和xslt模板做输入,输出为rtf格式的文档,并以流的形式发送到客户端,让用户下载,代码如下: 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("转换过程发生异常:"+te.getMessage()); out.close(); out=null; } }2.转换成pdf文档:图22转换成PDF文档将XML文档转换成PDF格式,使用了开源项目ApacheFOP来进行转换,要得到PDF文档,需要两步(图23):图23XML文档转换成PDF流程1)用XSLT样式表将XML文档转换为由XSL-FO元素构成的文件。要执行这一转换,只需用调用XSLT处理器。
2)用某种显示引擎将XSL-FO元素转换为PDF文件。本系统首先使用javax.xml.transform的transform()函数,使用XML文件和XSLT模板做输入,输出为XSL-FO元素构成的文档,然后使用FOP引擎将XSL-FO文件转换成用户需要的PDF文件,并以流的形式发送到客户端,让用户下载,源代码如下: @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生成过程发生异常:"+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发生异常"+e.getMessage()); }catch(org.apache.fop.apps.FOPExceptione){ out.close(); System.out.println("生成pdf发生异常"+e.getMessage()); } }XSLT模板本系统两种文档的生成,都是建立在模板的基础上,此模板为XSLT文件,遵循XSLT1.0标准。XSLT简介XSLT是由XSL(ExtensibleStylesheetLanguage)发展而来的,XSLT是一种基于XML的语言,用于将一类XML文档转换成另一种XML文档。如果是一个熟悉XML编程的开发人员,他可以自己手工编写自己的XSLT文件,但是对用户来说,要求太高,因此,我们使用了软件AltovaStyleVision来进行辅助设计XSLT模板。它使用所见即所得的方式来进行编写,首先在Design窗口(图24)中进行排版与设计,可以在RTFPreview窗口(图25)预览转换生成的rtf文档,或点击PDFPreview生成PDF模板进行预览。图24模板编辑图25模板预览当设计完成以后,即可导出生成RTF的XSLT文件和生成PDF的XSLT文件。web.xml文件的配置在Servlet启动时将读入web.xml文件中的初始化参数,在本系统中用于数据库的连接和XSLT模板的存放路径以及用户数据的存放路径实现可配置性。<context-param> <param-name>fileDir</param-name> <param-value>d:/data/data/</param-value>这里配置用户数据的存放路径 </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>这里配置数据库的连接驱动 </context-param> <context-param> <param-name>ConnStr</param-name> <param-va
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 新版食品采购合同法规格式3篇
- 搅拌机购销意向3篇
- 文艺演出艺人培训合同3篇
- 招标文件购买注意事项3篇
- 城市供电设施维护合同协议书内容
- 鞋店广告牌安装施工合同
- 矿山安全员聘用合同范例
- 证券工程分包协议
- 冰雪运动中心招商租赁合同
- 供应链设施写字楼租赁合同模板
- 2023版押品考试题库必考点含答案
- 双桥静力触探分层统计及承载力表0421
- 形势任务教育宣讲材料第一讲——讲上情
- 八卦五行-PPT课件
- ISO8573-2测定悬浮状油含量的试验方法学习资料
- 中国地质大学(武汉)教育发展基金会筹备成立情况报告
- 薪酬管理试卷及答案
- 大学无机及分析化学----气体练习题及答案
- 保险行业新会计准则实施指南征求意见稿
- 形式发票模板 PI模板 英文版
- 初一的最美的风景高分的作文600字
评论
0/150
提交评论