摘 要: 深入分析了在线投稿、审稿系统的功能和关键技术,设计了基于B/S结构的在线投稿、审稿系统方案,并利用MVC模式的Struts2+Spring+Jpa构架思想,采用Java编程语言、JSP页面技术、MYSQL数据库技术,实现了在线投稿、审稿系统,最后对系统的性能进行了测试和分析。
关键词: 投稿; 审稿; MVC; Struts2+Spring+Jpa; MySQL
计算机应用技术的进步,使期刊编辑流程信息化和网络化成为主要趋势。在线审稿、投稿系统缩短了作者的投稿周期,加快了编辑和专家的审稿流程,为作者与编辑进行即时沟通架设了桥梁,方便读者、作者在线阅读稿件。
目前出现的在线投稿、审稿系统采用ASP技术。ASP是微软推出的一种技术,只能在Windows操作系统上运行,Windows本身的所有问题都会一成不变地累加到了它的身上。安全性、稳定性、跨平台性都会因为与Windows的捆绑而显现出来。由于ASP程序采用非编译语言,大大降低了程序源代码的安全性,如果黑客侵入站点,就可以获得ASP源代码;每当客户端打开一个ASP网页时,服务器都必须将该ASP程序从头到尾重读一遍,并加以编译执行,最后送出标准的HTML格式文件给客户端,因而影响了运行速度。而JSP是跨平台的,可以在所有的服务器操作系统上运行。JSP源程序不大可能被下载,一些程序完全可以放到不对外的目录中。JSP在执行以前先被编译成字节码(byte code),字节码由Java虚拟机(Java Virtual Machine)解释执行,比源码解释的效率高;服务器上还有字节码的Cache机制,能提高字节码的访问效率。并且JSP结合MVC模式将数据和业务规则从表示层分开,可以最大化地重用代码,具有易维护性。综上所述本系统采用JSP[1]技术。
1 系统功能需求概述
投稿、审稿系统的主要目标是为了简化传统手工工作流程,缩短稿件在传递过程中的时间,使投稿人审稿人的交流便利顺畅,缩短论文发表的时滞[2]。
本系统分为投稿模块与审稿模块。投稿模块包含了以下5个功能:用户注册、用户登陆、在线投稿、稿件状态查询、修改个人信息。在线投稿功能包括填写稿件信息,上传稿件,稿件信息存储在数据库中,稿件上传到系统指定的硬盘目录中,投稿系统自动给每个稿件唯一的编号,以便编辑人员对稿件正确处理。审稿模块包含以下7个功能:权限管理、用户登录、查看稿件、稿件转发、稿件审理、在线退修、拟录稿件、退稿。权限管理功能:管理员对各个使用者的权责给予其所需的权限来浏览相应的页面,使用相应的操作,此系统的管理员是编辑;查看稿件功能:审稿模块的功能是可以查看稿件的基本信息,并可以下载原稿;稿件审理功能:评价稿件,将评价录入到数据库中。
2 系统设计
2.1 系统总体设计
本文根据传统手工流程建立作者、编务、编辑、副主编、主编、专家6个角色,系统方案图如图1。这些角色可以通过编辑部网站远程访问编辑部的数据库。其中编辑角色相当于一个中部枢纽,查看编务发来的稿件,评价稿件,把稿件转发给副主编、专家,查看副主编、专家对稿件的评价,决定对稿件进行退稿、退修、录用等操作。编辑具有角色管理的权限,删除、添加、修改各个角色及其功能等。
本文设置两个相对独立的数据库(投稿数据库、工作数据库),这样,可把来自作者的垃圾数据和带病毒数据挡在外面。其中,投稿数据库可以限制作者的稿件文件的大小和数量,并把作者投稿以临时文件形式存放,同时进行自动杀毒。在投稿数据库与工作数据库之间,单独提供一个工具程序,由编辑人工参与实现数据的过滤和导入。
2.2 处理流程
本系统的业务流程如图2所示,编务收到作者来稿后先进行查阅,删除一些垃圾稿件,并把不同栏目的稿件分配给不同的编辑;编辑初审稿件可以直接退稿,可以把稿件转发给副主编和相关的专家审稿;副主编可以把稿件转发给主编审理;编辑收到副主编和专家的审稿反馈后可以决定稿件的处理结果(退稿、退修、拟录);最后作者可以在系统上查看已投稿件的状态。
2.3 数据库设计
本系统采用的数据库是MySQL[3],数据表有register、caogaoxiang、tougao、functions、module、role、role_function、user_role、userinfo、category。表register用来存储作者注册的个人信息;表caogaoxiang是还未上传稿件的情况下存储作者投稿时填写的稿件的相关信息,并且作者可以在草稿箱看到此稿件的信息;表tougao是作者上传稿件成功后存储稿件信息;表category是存储编辑部人员对稿件操作的有关信息,表tougao、表category通过公共关键字contributionNo关联,关键字contributionNo是表tougao的主键,是category的外键;表functions、module、role、role_function、user_role、userinfo用来实现权限管理功能,由编辑角色操作。表tougao和表category部分内容如表1、表2所示。
3 系统实现
3.1 MVC模式简介
MVC架构是“Model-View-Controller”的缩写,即“模型-视图-控制器”。运用这种模块化“分离”的思想,MVC设计模式实现了业务逻辑和显示的分离,大大提高了软件的质量和代码可维护性。同时,降低了各层之间的耦合,提供了应用的可扩展性。
3.2 Struts2+Spring+JPA架构
基于MVC模式,本投稿和审稿系统分为持久层、数据对象层、业务层、控制层、表现层。Struts2框架用来实现页面跳转,Spring框架用来实现该系统业务逻辑的服务层,JPA框架则用来操作实现持久层和控制事务[4]。
(1)表示层:展现给作者、编辑人员、审稿专家等用户的状态界面,此处采用包含Struts2标签的JSP页面,Struts2标签简化了JSP代码。
(2)控制层:Struts2中的action,把用户的请求转发给不同的业务逻辑进行处理,并把处理后的信息反馈到表现层。
(3)业务逻辑层:此系统的业务逻辑包含该系统的业务需求,用户的每个业务请求都提供一个与之对应的业务逻辑方法。
(4)持久层:DAO层,负责与持久化对象交互,封装了数据的增、删、查、改操作。
(5)领域对象层:通过JPA作为O/R Mapping的映射工具,将关系型数据库映射成对象,实现以面向对象方式操作数据库。
各个模块采用的Struts2+Spring+JPA架构的系统结构图如图3所示。
3.3 系统实现
3.3.1 投稿模块
(1)填写稿件信息
作者角色填写稿件信息:作者在表示层页面Modify.JSP中填写稿件信息,点击提交按钮时,页面信息通过form表单发送给控制层,控制层ModifyAction收到作者的请求,调用业务逻辑层处理逻辑Modify方法,业务层处理逻辑调用持久层update方法访问领域对象层的数据对象。数据对象与数据库中的数据对应,处理数据对象就相当于处理数据库中的数据。图4为作者填写稿件信息的逻辑时序图。
部分代码如下:
ModifyAction调用业务层逻辑方法的代码为:
public String modify()
{
cf.modify(c);
return Action.SUCCESS;
}
操作数据表的业务层接口代码: public void modify (Caogao c);
操作数据表业务逻辑层实现方法modify代码:public void modify (Caogao c) {
cd.update(c);
}
操作数据表的持久层接口代码:public Caogao update(Caogao entity);
操作数据表持久层实现方法update代码:
public Caogao update(Caogao entity) {
EntityManagerHelper.beginTransaction();
try {
Caogao result = getEntityManager().merge(entity);
EntityManagerHelper.commit();
return result;
} catch (RuntimeException re) {
EntityManagerHelper.rollback();
throw re;
}
}
(2)上传稿件
作者角色上传稿件:采用在线文件上传组件Components-FileUPload上传稿件。作者在表示层页面Upload.jsp中选择要上传的稿件的路径,点击上传按钮,页面请求通过form表单发送给控制层UploadAction, form中的enctype属性用来设置上传数据的编码方式,应设为multipart/form-date。UploadActon中的execute()方法中首先创建一个字节型输入流来读取传送来的文件file。然后通过ServletAcrionContext.getRequest().getRealPath()获取存储问价的父目录,然后创建一个destFile文件。该文件用来做为输出流的目的文件。最后再创建一个关于destFile文件的输出流。创建完输入流和输出流后,就可以创建一个中间字节数组buffer来实现输入流与输出流的转换,从而实现文件的上传功能。实现上传功能,还要在struts.xml文件中对实现文件上的Action进行拦截器方面的配置,可以设置允许上传文件的大小,文件类型等等。上传成功后返回Uploadsuccess.jsp。
3.3.2 审稿模块
(1)查阅稿件
编辑角色查看稿件信息:稿件信息包括稿件的基本信息、稿件内容及编辑部工作人员和专家对其的评价。查看稿件内容需要下载稿件,实现方法也是采用Components-FileUPload组件,和上面讲到的上传稿件类似,这里就不再详述。在编辑角色的ViEW层页面Editor.jsp点击目标稿件的查看按钮,则通过URL链接到findSingleContribution.action,并把目标稿件的id传送给action,此action调用业务层处理逻辑findSingleContribution,业务层调用持久层findById方法查询数据对象, 查询完成后返回数据库结果,返回数据对象结果,返回逻辑处理结果,返回页面视图展现结果。
(2)审理稿件
编辑角色审理稿件:主要包括评价稿件,提交审理结果。评价稿件与作者角色填写稿件信息类似,调用持久层的update方法。审理结果有三种:拟录、退修、退稿、分别对应数据库flag中的1、2、3。提交审理结果就是修改flag的值。在Editor.jsp中选择目标稿件的三种稿件的任一种结果,调用控制层的review.action并传递目标稿件的id和稿件处理结果flag的值给action,调用业务层的review方法,调用持久层的update方法。返回处理结果。
4 系统测试
把系统布置到tomcate6中,通过浏览器访问。按照注册、登陆、投稿、审稿的流程操作系统。测试结果表明基本实现了需求分析时的功能。并且该系统通过javascript实现了许多浏览器端数据输入验证功能,例如文题不能为空、验证邮箱格式、验证是否上传了稿件等等。 图5是投稿成功后,按照编辑人员审稿的流程操作的测试结果。
本文设计的网站和系统是基于B/S结构,采用Dreamweaver制作静态网页,采用MVC模式Struts2+Spring+Jpa框架,Java语言和JSP技术,MySQL数据库实现的方案,完成了投稿和审稿功能。本系统具有如下优点:采用Java语言和JSP技术,具有跨平台的优点;基于B/S结构,系统运行更简易;采用MVC模式和Struts2+Spring+Jpa框架,易维护、易升级、易操作。本系统很好地解决了传统手工投审稿效率低、耗时长、交互性差的问题。
参考文献
[1] 李振捷. JSP网站开发典型模块与实例精讲[M].北京:电子工业出版社,2007.
[2] 胡异峰.投稿考评及分析系统的设计与实现[J].计算机工程与应用,2005(29):223-225.
[3] (荷)范德兰斯著. MySQL开发者SQL权威指南[M].许杰星,等译.北京:机械工业出版社,2008.
[4] 林永傍,刘伟平,黄红斌,等.EPON故障管理系统的设计与实现[J].光通信技术,2009,33(10):16-18.