基于JSP+mysql的论文格式化系统设计与实现(毕业论文+程序源码)
大家好,今天给大家介绍基于JSP+mysql的论文格式化系统设计与实现,文章末尾附有本毕业设计的论文和源码下载地址哦。需要下载开题报告PPT模板及论文答辩PPT模板等的小伙伴,可以进入我的博客主页查看左侧最下面栏目中的自助下载方法哦
文章目录:
1、项目简介
-
论文的格式修改是一件很麻烦的事情,一篇论文在定稿以前为了让格式达到标准,需要修改很多次,浪费了大量时间。本系统的设计初衷就是为了解决论文书写格式的规范化,方便学者论文格式的自动生成。
-
本系统是基于Java平台的Web应用程序。采用JSP作为后台开发语言,HTML和JavaScript作为前台开发语言,MYSQL5.0作为后台数据库,系统具有稳定性高、可移植性强等特点。
-
本系统中文档数据的传输和存储均使用XML形式,以XML作为数据的中间状态,便于以后进行系统的扩展。完成了论文的格式化,生成格式化后的word文件和PDF文件,并提供给用户进行下载。
-
本系统设计过程中使用了当前比较流行的技术,比如使用AJAX技术来进行注册验证,系统架构使用B/S模式进行设计。
2、资源详情
项目难度:中等难度
适用场景:相关题目的毕业设计
配套论文字数:9395个字31页
包含内容:全套源码+配整论文
3、关键词
格式化;移植性;数据库4、毕设简介
提示:以下为毕业论文的简略介绍,项目完整源码及完整毕业论文下载地址见文末。
1 引言
1.1 课题背景
在人们繁忙的工作环境中,很多资料文件都要形成规范化的文档便于分类和存放,信息化的社会已经将以前手工抄写文档全部用电脑办公平台提供的统一的文档编辑软件所取代,当然所编写的文档的格式也是统一化的,包括文档中内容的字体,字号,标记,页码等等都是统一的。比如美国微软公司的word文档格式,这种格式已经成为了世界的一种标准,全世界通用,再比如Adobe公司的PDF文档格式,也是一种世界标准,是人们常用的一种文档格式。然而在日常的办公中,人们需要在文档编辑软件中编辑文档,需要花费大量的时间和精力来编辑文档的格式,比如字体,字号等等,对于同一类的文档来说,格式都是规范化好了的,但是文档编辑器不可能提供每一个规范好了的模板,因为各个地区或者企业他都有自己的规范,人们需要自己去编辑,这样话就降低了办公的效率,对于个人和企业来说都是在浪费时间,提高了成本。于是聪明的人开始想办法解决这个问题,新的软件由此产生了,涌现出了很多的PDF、 word文档的转换软件,他们很强大,不仅可以将PDF转换为word,也可以将word转换成PDF格式,有的也可以转换其他格式的文档,比如将HTML文档转化成PDF文档。
1.2 国内外研究现状
在国外很早就开始进行文档自动化的研究了,但是都是进行底层的文档生成工作,都是提供一个底层平台,用户使用平台提供的API,基于自己的特定目标进行二次开发。很多公司都是使用开源的第三方包,在遵守开源许可证的基础上进行产品开发。
1.3 本课题研究的意义
考虑到高等学府中教师,学生也要写论文,而且所写的论文要保存为特定格式的文档,保证论文的规范化,为此,我们设计了一套系统专门提供给毕业生将论文转化为规范的格式,省去大量的论文编辑时间,提高论文发表的效率,降低论文修改的频率,给同学们带来巨大的方便。我们将系统定位于B/S模式,主要考虑到系统易用性,客户机只需要安装了IE浏览器就可以通过访问网站的形式使用论文格式化系统,只是本系统一大优势。
1.4 本课题的研究方法
通过对业界使用的各种文档转换技术进行比较分析,找到最适合本课题的技术,然后使用选择的技术构建本系统。
2 论文格式化系统总体设计
2.1 论文格式化系统的需求分析
2.1.1 功能需求
①支持用户注册
因为用户需要将文档内容保存在服务器上,所以必须实现用户的注册功能。用户需要保存的信息包括用户名、呢称、密码、性别、电子邮件地址、省份、城市、注册时间,用户信息将保存在数据库中。
②支持用户登录
用户登录以后才能进行文档的上传以及转换等操作,这就要求保持会话信息。
③支持用户取回记录
用户登录以后,可以将服务器上保存的数据取下来,进行再次修改。
④支持用户上传记录
用户第一次录入数据,或者是用户将服务器上取回的数据进行修改以后,可以将数据上传至服务器,并且在数据库中添加记录的文件名路径。
⑤支持用户转换成word文档
用户通过页面的向服务器提交转换成word文档的请求,服务器接受到请求以后,将文档转换成word文档,然后再传送给客户端,供用户下载使用。
⑥支持用户转换成PDF文档
用户通过页面的向服务器提交转换成PDF文档的请求,服务器接受到请求以后,将文档转换成PDF文档,然后再传送给客户端,供用户下载使用。
⑦支持可配置性,便于移植
模板的可配置性:针对具体的应用场景,通过修改模板文件,就可以生成合乎用户要求的文档。
环境的可配置性:数据库的用户名、密码,以及模板文件的存放路径,用户数据的存放路径,都应该通过配置文件实现。
2.1.2 性能需求
①一个用户不能看到其他用户的记录。
②充分考虑易用性和实用性。
③软件应该以B/S架构,界面简单易用。
2.2 论文格式化系统选型
对系统设计语言、后台数据库的选择直接影响到系统在各种平台上运行时性能的好坏,对日后系统性能的扩展具有决定性的作用。因此,论文格式化系统在设计初期做了详细的系统选型。
2.2.1 设计语言的选择
1、Java Server Page概述
JSP(JAVA Server Page)是由Sun公司于1999年6月推出的新技术,是基于Java Servlet以及整个JAVA体系的Web开发技术,能够实现跨平台和兼容各种Web服务器产品,而且还能够把强大的 Java服务器应用技术(Server-side Java Technology)有机的融合到HTML网页中去。它是结合markup(HTML 或XML)和JAVA代码来处理的一种动态页面。每一页第一次被调用时,通过JSP引擎自动被编译成Servlet,然后被执行,以后每次调用时,执行编译过的Servlet。JSP提供了多种方式访问Java class、Servlet、Applets和Web Server,因此,Web应用的功能可以分成多个明确定义功用接口的组件,通过JSP将它们结合在一起。
这种模式允许工作分成两部分:组件开发与页面设计和编译(结合一些方法调用)。在这种应用编译模式,使得业务逻辑和数据处理分开。
2、JSP与ASP的比较
JSP与ASP技术非常相似,两者都提供在HTML代码中混合某种程序代码、由语言引擎解释执行程序代码的能力。并且双方都能够为程序员提供组件设计的功能,(ASP使用COM组件、JSP使用Java Bean组件)。两者都是面向Web服务器的技术,客户端浏览器不需要任何附加的软件支持。
两者之间主要的区别:
省略
2.2.2 数据库的选择
本系统的数据库选用的是MYSQL。首先,它提供了以Web标准为基础的扩展数据库编程功能,可支持Web的分析,对数据的Web访问。其次,它具有良好的移植性,可以移植到几乎所有平台。最后,它是免费的,极大的节约了成本。
2.2.3 开发工具的选择
Eclipse 是一个很让人着迷的开发环境,它提供的核心框架和可扩展的插件机制给广大的程序员提供了无限的想象和创造空间。目前网上流传相当丰富且全面的开发工具方面的插件,但是Eclipse已经超越了开发环境的概念,可以想象Eclipse将成为未来的集成的桌面环境。目前的Eclipse本身就具备资源管理和外部程序的功能,加上无所不能的插件,将构成一个丰富多彩的工作环境而不仅仅是一个IDE。
2.2.4 文档转换技术的选择
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文档的生成。
2.3 环境搭建
省略
3 论文格式化系统详细设计
3.1 系统详细设计
3.1.1 系统流程
在本系统中,角色只有用户一种,用户只有登录以后才具有各个操作的权限。该系统的系统流程如图2所示:
图2 论文格式化系统流程图
流程描述:
① 当用户第一次使用这个系统的时候,首先会注册一个账号。
② 用户使用已经存在的账号登录系统,在这个过程中,如果发生错误,将会转到指定的错误页面。如果登录成功,用户可以直接进入编辑页面进行编辑,或者直接提取以前的记录进行修改。
③ 用户修改好数据以后上传至服务器供用户下次提取记录。
④ 用户通过显示记录页面,进行文档的转换操作,得到需要的文档。
3.1.2 结构设计
论文格式化系统主架构采用界面——中间件——数据库这样的三层结构。如图3所示:
图3 论文格式化系统结构图
图4 中间件设计
省略
3.2 设计思想
前台使用JavaScript和JSP与用户进行交互,并结合Ajax技术,给使用者更好的用户体验。
后台使用JSP+ Servlet,使用JSP处理业务逻辑,Servlet来处理数据逻辑,实现了良好的分层结构,便于扩展和维护。
3.3 数据库设计
3.3.1数据库需求分析
本系统仅仅需要简单的用户管理,提供用户的注册,用户的登录,以及保存用户上传到服务器上的数据。
3.3.2数据库关系设计
通过以上的需求分析,设计出数据库的逻辑结构图,从这种逻辑结构有可以建立数据库的物理结构即表结构。根据需求设计出两个数据表,分别是:用户信息表(user),用户记录表(record)其结构及关系如图5所示。
图5 数据表关系图
3.3.3数据库逻辑设计
确定了数据库的逻辑关系和数据结构之后,进一步将以上所述的八个数据表由概念结构转化为数据库系统所支持的实际数据模型,也就是数据库的逻辑结构。
表3–1所示为用户信息表(user),记录了用户的信息。
3.4 前台界面的设计
3.4.1 首页的设计
图6 首页
当用户第一次打开本系统的时候首先进入的将是此页面,很简介的界面,浅显易懂,已经有账号的用户可以单击“登录”按钮,将转入登录界面(图7),进行登录。
3.4.2 登录页面的设计
图7 登录页面
3.4.3 用户不存在页面的设计
输入用户名和密码即可点登录,如果用户不存在将转入用户不存在页面(图8)
图8 用户不存在
3.4.4 密码错误页面的设计
如果密码错误,将进入密码错误页面(图9)
图9 密码错误
3.4.5 登录成功页面的设计
用户名和密码都正确的话,将进入登录成功页面(图10)
图10 登录完成
然后可以直接提取保存的记录或者直接进入首页进行文档内容的输入。
3.4.6 注册页面的设计
如果用户第一次使用本系统,那么将进入注册页面注册一个账号才能使用,注册页面使用了Ajax技术进行数据的验证,比如用户名是否已经存在或者用户邮箱重复,可以不提交,只要输入完,鼠标点击另一行,验证结果就会显示在右边(如图11)
图11 注册页面
3.4.7 注册成功页面的设计
当用户注册成功将转到注册成功页面(图12)
图12 成功注册
3.4.8 提取或显示记录页面的设计
当用户登录以后可以进入提取或显示记录的页面,进行提取记录或者转换文档的操作
(图13)
图13 显示记录
3.5 后台的编写
3.5.1 数据库操作模块
本系统中,所有连接数据库进行操作,均使用一个DbConnBean类(图14),每当要使用数据库之前,需要初始化此类例如:
data.DbConnBean con = new data.DbConnBean(DBDriver, ConnStr, MyUser,MyPassword);
其中输入参数分别是驱动类型,连接字符串,用户名,密码。然后使用DbConnBean对象con进行数据库的操作,DbConnBean中四个函数,对应数据库的四种操作,只需要传入SQL语句,即可进行操作。
public ResultSet executeQuery(String sql)函数,它是数据库查询操作,返回一个结果集,如果此操作有异常发生,将打印在控制台或输出到日志文件;
public void executeUpdate(String sql)函数,它是数据更新操作,无返回值,如果此操作有异常发生,将打印在控制台或输出到日志文件;
public boolean executeInsert(String sql)函数,它是数据插入操作,插入成功返回true,插入失败返回false,如果此操作有异常发生,将打印在控制台或输出到日志文件;
public boolean executeDelete(String sql)函数,它是数据删除操作,删除成功返回true,插入失败返回false, 如果此操作有异常发生,将打印在控制台或输出到日志文件;
图14 数据库操作
3.5.2 用户登录模块
用户的登录请求将被发送到LoginAction页面(图15),用户名和密码将作为参数一起发送。LoginAction接受用户名和密码,并查询数据库判断用户名和密码是否正确,如果正确就创建会话,并设置会话属性,页面转到index.jsp中。如果用户名错误或者密码错误,就将页面转到result.jsp中,并给出提示信息。
图15 登录请求
3.5.3 注册及验证模块
用户使用注册页面register.jsp的过程中,每输入完一项,客户端会把数据发送到Check(图16)中进行检查,检查结果将以XML格式发回客户端,并立即显示出来。当用户将数据输入完毕,点击注册按钮以后,请求被发送到RegAction(图17)中,进行数据库插入操作,如果插入成功,将页面转到注册成功页面(图12)。
图16 注册效验
图17 注册动作
3.5.4 记录上传与下载模块
当用户在首页点击提交按钮的时候,客户端的数据将以XML形式被组织起来发往Upload(图18),Upload再调用FileProcess(图19)对象的public boolean fileSave(byte[] data, String name,String dir)函数将数据保存到服务器上,保存成功就将记录的文件名写入数据库,否则提示用户提交失败。
图18 上传动作
图19 文件上传与下载动作
当用户点击“提取记录”的时候,此请求将被发送到index.jsp,index.jsp根据接收的文件名参数调用FileProcess(图19)的public byte[] fileDown(String path)函数将记录以XML形式下载到客户端,客户端使用javaScript脚本将数据填充到输入框中。
3.5.5 文档转换模块
当用户点击“转换成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格式的文档,并以流的形式发送到客户端,让用户下载,代码如下:
public void conversion() throws IOException {
// TODO 自动生成方法存根
response.setContentType("Application/msword; charset=UTF-8");
response.setHeader("Content-Disposition", "attachment; filename="+newFilename(fileName));
OutputStream out=response.getOutputStream();
StreamSource sr=new StreamSource(new File(fileDir+fileName));
StreamResult rs=new StreamResult(out);
TransformerFactory factory=TransformerFactory.newInstance();
Templates tempXsl=null;
try{
tempXsl=factory.newTemplates(new StreamSource(new File(confDir+xslt)));
Transformer tf=tempXsl.newTransformer();
tf.transform(sr, rs);
out.flush();
out.close();
}
catch(TransformerConfigurationException e){
System.out.println("xslt严重配置错误:"+e.getMessage());
out.close();
out=null;
}
catch(TransformerException te){
System.out.println("转换过程发生异常:"+te.getMessage());
out.close();
out=null;
}
}
2.转换成pdf文档:
图22 转换成PDF文档
将XML文档转换成PDF格式,使用了开源项目Apache FOP 来进行转换,要得到PDF文档,需要两步(图23):
图23 XML文档转换成PDF流程
1)用 XSLT 样式表将 XML 文档转换为由 XSL-FO 元素构成的文件。要执行这一转换,只需用调用 XSLT 处理器。
2)用某种显示引擎将 XSL-FO 元素转换为 PDF 文件。
本系统首先使用javax.xml.transform的transform()函数,使用XML文件和XSLT模板做输入,输出为XSL-FO元素构成的文档,然后使用FOP引擎将XSL-FO文件转换成用户需要的PDF文件,并以流的形式发送到客户端,让用户下载,源代码如下:
void conversion() throws IOException {
// TODO 自动生成方法存根
response.setContentType("Application/msword; charset=UTF-8");
response.setHeader("Content-Disposition","attachment;
filename="+newFilename(fileName));
OutputStream out=response.getOutputStream();
byte[] temp;
ByteArrayOutputStream bos=new ByteArrayOutputStream();
StreamSource sr = new StreamSource(new File(fileDir+fileName));
StreamResult rs = new StreamResult(bos);
TransformerFactory factory = TransformerFactory.newInstance();
Templates tempXsl = null;
try {
tempXsl=factory.newTemplates(
new StreamSource(new File(confDir+xslt)));
Transformer tf = tempXsl.newTransformer();
tf.setOutputProperty(OutputKeys.ENCODING, "gb2312");
tf.transform(sr, rs);
} catch (TransformerConfigurationException e) {
System.out.println("xslt严重配置错误:" + e.getMessage());
} catch (TransformerException te) {
System.out.println("fo生成过程发生异常:" + te.getMessage());
}
temp=bos.toByteArray();
// System.out.println(new String(temp));测试代码
try {
Driver driver = new Driver();
Logger logger=new ConsoleLogger(ConsoleLogger.LEVEL_INFO);
driver.setLogger(logger);
org.apache.fop.messaging.MessageHandler.setScreenLogger(logger);
driver.setRenderer(Driver.RENDER_PDF);
InputStream input =new ByteArrayInputStream(temp);
driver.setInputSource(new InputSource(input));
driver.setOutputStream(out);
Options options = new Options(new File(confDir+"userconfig.xml"));
driver.run();
out.flush();
out.close();
} catch (IOException e) {
out.close();
System.out.println("生成pdf发生异常"+e.getMessage());
} catch (org.apache.fop.apps.FOPException e) {
out.close();
System.out.println("生成pdf发生异常"+e.getMessage());
}
}
public
3.6 XSLT模板
本系统两种文档的生成,都是建立在模板的基础上,此模板为XSLT文件,遵循XSLT1.0标准。
3.7 XSLT简介
XSLT是由XSL(Extensible Stylesheet Language)发展而来的,XSLT是一种基于XML的语言,用于将一类XML文档转换成另一种XML文档。
如果是一个熟悉XML编程的开发人员,他可以自己手工编写自己的XSLT文件,但是对用户来说,要求太高,因此,我们使用了软件Altova StyleVision来进行辅助设计XSLT模板。它使用所见即所得的方式来进行编写,首先在Design窗口(图24)中进行排版与设计,可以在RTF Preview 窗口(图25)预览转换生成的rtf文档,或点击PDF Preview生成PDF模板进行预览。
图24 模板编辑
图25 模板预览
当设计完成以后,即可导出生成RTF的XSLT文件和生成PDF的XSLT文件。
3.8 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-value>jdbc:mysql://127.0.0.1:3306/graduate?useUnicode=true&characterEncoding=GB2312
</param-value>
这里配置数据库的连接字符串
</context-param>
<context-param>
<param-name>MyUser</param-name>
<param-value>ydlover</param-value>
这里配置数据库的用户名
</context-param>
<context-param>
<param-name>MyPassword</param-name>
<param-value>ydl2008</param-value>
这里配置数据库的密码
</context-param>
<context-param>
<param-name>rtfXsltFile</param-name>
<param-value>rtf.xslt</param-value>
这里配置rtf转换模板的文件名
</context-param>
<context-param>
<param-name>pdfXslFile</param-name>
<param-value>pdf.xsl</param-value>
这里配置pdf转换模板的文件名
</context-param>
结 论
经过这段时间的紧张工作,我已经完成了论文格式化系统基本功能的设计和实现。系统实现了用户注册及登陆,文档内容的上传和记录还原,完成了核心功能文档格式化。制作完成了用于生成RTF文档和PDF文档的XSLT转换模板。
因为时间上的限制,只实现了实验性质的系统,要达到商用化程度,还有做很多工作。例如:
① 本系统对用户权限未分级,只有简单的功能,还没有提供用户管理以及模板管理的后台功能;
② 模板只是做了概念性质的设计,远没达到实用化地步,比如个别字体的大小,表格的宽度等等,都没有仔细设计;
③ 数据库连接未使用连接池,对用户数庞大的应用效率会不是很高。
改进方案
① 实现用户分级,增加管理后台;
② 详细设计实用化的模板,满足商业需求;
④ 配置数据库连接池。
参考文献
[1] 林上杰,林康司.JSP 2.0技术手册[M].北京:电子工业出版社,2005。
[2] 汪孝宜,刘中兵 等.JSP数据库开发实例精粹[M].北京:电子工业出版社,2005。
[3] 黄浩文,黄静舒.JSP核心技术和电子商务应用实例[M].北京:机械工业出版社,2001。
[4] 耿祥义,张跃平.JAVA2实用教程[M].北京:清华大学出版,2003。
[5] Fabio Arciniegas.XML开发指南[M].北京:清华大学出版社,2003。
[6] Tom Myers,Alexander Nakhimovsky.Java XML编程指南.北京:电子工业出版社,2001。
致 谢
省略
5、资源下载
本项目源码及完整论文如下,有需要的朋友可以点击进行下载。如果链接失效可点击下方卡片扫码自助下载。
序号 | 毕业设计全套资源(点击下载) |
---|---|
本项目源码 | 基于JSP+mysql的论文格式化系统设计与实现(源码+文档)_jsp_BS架构_论文格式化系统.zip |