论文无忧网提供:计算机毕业论文范文|计算机毕业设计|计算机毕业论文
栏目导航 ASP Java Web .NET VB6.0 JAVA VC VF DELPHI PB 计算机网络 计算机科学与技术 PHP 安卓APP 其他 C# 代写论文
当前位置: > 计算机 > 计算机科学与技术 >

论文格式化系统_--后台模块(论文+程序)

3.5.4    记录上传与下载模块

  当用户在首页点击提交按钮的时候,客户端的数据将以XML形式被组织起来发往Upload(图18),Upload再调用FileProcess(图19)对象的public boolean fileSave(byte[] data, Stringname,String dir)函数将数据保存到服务器上,保存成功就将记录的文件名写入数据库,否则提示用户提交失败。

内容来自www.paper51.com

paper51.com

图18 上传动作

http://www.paper51.com

http://www.paper51.com

图19 文件上传与下载动作 paper51.com

  当用户点击“提取记录”的时候,此请求将被发送到index.jsp,index.jsp根据接收的文件名参数调用FileProcess(图19)的public byte[] fileDown(Stringpath)函数将记录以XML形式下载到客户端,客户端使用javaScript脚本将数据填充到输入框中。 copyright paper51.com

3.5.5    文档转换模块 http://www.paper51.com

当用户点击“转换成word文档”或者“转换成pdf文档”的时候,请求将被发送到action.Conversion(图20)中,action.Conversion根据需要转换类型再调用相应的转换对象data.ConversionDoc(图21)或者data.ConversionPdf(图22)进行转换。 内容来自论文无忧网 www.paper51.com

paper51.com

图20 转换请求

内容来自论文无忧网 www.paper51.com

1.转换成word文档: paper51.com

图21 转换成word文档

copyright paper51.com

 将XML文档转换成word支持的rtf格式,使用了javax.xml.transform的transform()函数,使用xml文件和xslt模板做输入,输出为rtf格式的文档,并以流的形式发送到客户端,让用户下载,代码如下: http://www.paper51.com

       public voidconversion() throws IOException {

http://www.paper51.com

              //TODO 自动生成方法存根 内容来自论文无忧网 www.paper51.com

              response.setContentType("Application/msword;charset=UTF-8");

内容来自论文无忧网 www.paper51.com

              response.setHeader("Content-Disposition","attachment; filename="+newFilename(fileName));

内容来自www.paper51.com

              OutputStreamout=response.getOutputStream();

内容来自论文无忧网 www.paper51.com

              StreamSourcesr=new StreamSource(new File(fileDir+fileName));

内容来自论文无忧网 www.paper51.com

              StreamResultrs=new StreamResult(out);

paper51.com

              TransformerFactoryfactory=TransformerFactory.newInstance(); copyright paper51.com

              TemplatestempXsl=null;

内容来自论文无忧网 www.paper51.com

              try{

内容来自www.paper51.com

              tempXsl=factory.newTemplates(newStreamSource(new File(confDir+xslt))); http://www.paper51.com

              Transformertf=tempXsl.newTransformer(); paper51.com

           tf.transform(sr,rs); paper51.com

              out.flush();

copyright paper51.com

              out.close(); paper51.com

              }

paper51.com

              catch(TransformerConfigurationExceptione){ http://www.paper51.com

                     System.out.println("xslt严重配置错误:"+e.getMessage()); http://www.paper51.com

                     out.close();

copyright paper51.com

                     out=null;

内容来自www.paper51.com

              }

内容来自论文无忧网 www.paper51.com

              catch(TransformerExceptionte){ copyright paper51.com

                     System.out.println("转换过程发生异常:"+te.getMessage()); http://www.paper51.com

                     out.close();

copyright paper51.com

                     out=null; copyright paper51.com

              }

http://www.paper51.com

       }

内容来自论文无忧网 www.paper51.com

2.转换成pdf文档: http://www.paper51.com

内容来自www.paper51.com

图22 转换成PDF文档

copyright paper51.com

将XML文档转换成PDF格式,使用了开源项目Apache FOP 来进行转换,要得到PDF文档,需要两步(图23):

http://www.paper51.com

http://www.paper51.com

图23 XML文档转换成PDF流程

内容来自论文无忧网 www.paper51.com

1)用 XSLT 样式表将 XML 文档转换为由 XSL-FO 元素构成的文件。要执行这一转换,只需用调用 XSLT 处理器。 2)用某种显示引擎将 XSL-FO 元素转换为 PDF 文件。 内容来自论文无忧网 www.paper51.com

本系统首先使用javax.xml.transform的transform()函数,使用XML文件和XSLT模板做输入,输出为XSL-FO元素构成的文档,然后使用FOP引擎将XSL-FO文件转换成用户需要的PDF文件,并以流的形式发送到客户端,让用户下载,源代码如下: paper51.com

    @Override 内容来自www.paper51.com

    public void conversion()throws IOException { paper51.com

       // TODO 自动生成方法存根

内容来自www.paper51.com

       response.setContentType("Application/msword;charset=UTF-8"); http://www.paper51.com

       response.setHeader("Content-Disposition","attachment;

copyright paper51.com

filename="+newFilename(fileName)); paper51.com

       OutputStreamout=response.getOutputStream(); paper51.com

       byte[]temp; 内容来自论文无忧网 www.paper51.com

       ByteArrayOutputStreambos=new ByteArrayOutputStream();

内容来自论文无忧网 www.paper51.com

           StreamSourcesr = new StreamSource(new File(fileDir+fileName)); 内容来自www.paper51.com

           StreamResultrs = new StreamResult(bos);

copyright paper51.com

           TransformerFactoryfactory = TransformerFactory.newInstance(); paper51.com

           TemplatestempXsl = null; paper51.com

           try{ 内容来自www.paper51.com

              tempXsl=factory.newTemplates(

http://www.paper51.com

new StreamSource(newFile(confDir+xslt))); http://www.paper51.com

              Transformertf = tempXsl.newTransformer(); copyright paper51.com

              tf.setOutputProperty(OutputKeys.ENCODING,"gb2312");

内容来自论文无忧网 www.paper51.com

              tf.transform(sr,rs); copyright paper51.com

           }catch (TransformerConfigurationException e) {

内容来自www.paper51.com

              System.out.println("xslt严重配置错误:" + e.getMessage());

内容来自论文无忧网 www.paper51.com

           }catch (TransformerException te) {

paper51.com

              System.out.println("fo生成过程发生异常:" + te.getMessage());

内容来自www.paper51.com

           }

http://www.paper51.com

           temp=bos.toByteArray();

paper51.com

    //     System.out.println(new String(temp));测试代码

内容来自www.paper51.com

           try{ http://www.paper51.com

              Driverdriver = new Driver(); http://www.paper51.com

              Loggerlogger=new ConsoleLogger(ConsoleLogger.LEVEL_INFO);

内容来自www.paper51.com

              driver.setLogger(logger);

内容来自论文无忧网 www.paper51.com

              org.apache.fop.messaging.MessageHandler.setScreenLogger(logger); paper51.com

              driver.setRenderer(Driver.RENDER_PDF);

内容来自论文无忧网 www.paper51.com

              InputStreaminput =new ByteArrayInputStream(temp); http://www.paper51.com

              driver.setInputSource(newInputSource(input)); 内容来自论文无忧网 www.paper51.com

              driver.setOutputStream(out); 内容来自www.paper51.com

              Optionsoptions = new Options(new File(confDir+"userconfig.xml")); 内容来自www.paper51.com

              driver.run();

paper51.com

              out.flush();

内容来自www.paper51.com

              out.close(); 内容来自论文无忧网 www.paper51.com

           }catch (IOException e) { paper51.com

              out.close();

内容来自www.paper51.com

              System.out.println("生成pdf发生异常"+e.getMessage()); http://www.paper51.com

           }catch (org.apache.fop.apps.FOPException e) { http://www.paper51.com

              out.close();

copyright paper51.com

              System.out.println("生成pdf发生异常"+e.getMessage()); paper51.com

           }

内容来自www.paper51.com

    }

内容来自www.paper51.com

3.6      XSLT模板

paper51.com

本系统两种文档的生成,都是建立在模板的基础上,此模板为XSLT文件,遵循XSLT1.0标准。 http://www.paper51.com

3.7      XSLT简介

http://www.paper51.com

XSLT是由XSL(ExtensibleStylesheet Language)发展而来的,XSLT是一种基于XML的语言,用于将一类XML文档转换成另一种XML文档。

http://www.paper51.com

如果是一个熟悉XML编程的开发人员,他可以自己手工编写自己的XSLT文件,但是对用户来说,要求太高,因此,我们使用了软件Altova StyleVision来进行辅助设计XSLT模板。它使用所见即所得的方式来进行编写,首先在Design窗口(图24)中进行排版与设计,可以在RTF Preview 窗口(图25)预览转换生成的rtf文档,或点击PDFPreview生成PDF模板进行预览。

http://www.paper51.com

copyright paper51.com

图24 模板编辑

paper51.com

http://www.paper51.com

图25 模板预览 http://www.paper51.com

当设计完成以后,即可导出生成RTF的XSLT文件和生成PDF的XSLT文件。

内容来自www.paper51.com

3.8      web.xml文件的配置

内容来自www.paper51.com

在Servlet启动时将读入web.xml文件中的初始化参数,在本系统中用于数据库的连接和XSLT模板的存放路径以及用户数据的存放路径实现可配置性。

paper51.com

<context-param>

http://www.paper51.com

       <param-name>fileDir</param-name>

http://www.paper51.com

       <param-value>d:/data/data/</param-value> 内容来自www.paper51.com

这里配置用户数据的存放路径 copyright paper51.com

    </context-param> 内容来自论文无忧网 www.paper51.com

    <context-param>

内容来自www.paper51.com

       <param-name>confDir</param-name>

内容来自www.paper51.com

       <param-value>d:/data/conf/</param-value> 内容来自论文无忧网 www.paper51.com

这里配置XSLT模板的存放路径 copyright paper51.com

    </context-param> 内容来自论文无忧网 www.paper51.com

    <context-param>

内容来自www.paper51.com

       <param-name>DBDriver</param-name> paper51.com

       <param-value>org.gjt.mm.mysql.Driver</param-value>

内容来自论文无忧网 www.paper51.com

这里配置数据库的连接驱动 paper51.com

    </context-param> http://www.paper51.com

    <context-param>

paper51.com

       <param-name>ConnStr</param-name> copyright paper51.com

        <param-value>jdbc:mysql://127.0.0.1:3306/graduate?useUnicode=true&amp;characterEncoding=GB2312 内容来自论文无忧网 www.paper51.com

       </param-value>

copyright paper51.com

这里配置数据库的连接字符串 copyright paper51.com

    </context-param>

paper51.com

    <context-param> 内容来自论文无忧网 www.paper51.com

       <param-name>MyUser</param-name>

http://www.paper51.com

       <param-value>ydlover</param-value>

内容来自论文无忧网 www.paper51.com

这里配置数据库的用户名

paper51.com

    </context-param> 内容来自www.paper51.com

    <context-param> 内容来自论文无忧网 www.paper51.com

       <param-name>MyPassword</param-name>

paper51.com

       <param-value>ydl2008</param-value>

内容来自论文无忧网 www.paper51.com

这里配置数据库的密码

http://www.paper51.com

    </context-param> 内容来自www.paper51.com

    <context-param>

copyright paper51.com

       <param-name>rtfXsltFile</param-name>

内容来自www.paper51.com

       <param-value>rtf.xslt</param-value>

内容来自www.paper51.com

这里配置rtf转换模板的文件名

http://www.paper51.com

    </context-param> 内容来自论文无忧网 www.paper51.com

    <context-param> copyright paper51.com

       <param-name>pdfXslFile</param-name>

内容来自论文无忧网 www.paper51.com

       <param-value>pdf.xsl</param-value>

http://www.paper51.com

这里配置pdf转换模板的文件名

paper51.com

    </context-param>

内容来自论文无忧网 www.paper51.com

------分隔线----------------------------
联系方式