基于BS的期刊投稿系统
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于B/S的期刊投稿系统
作者:陈汝辉,陈蓉西
来源:《电脑知识与技术》2010年第18期
摘要:该文介绍了一个基于B/S模式的期刊投稿系统。
编辑部可以利用该系统向用户提供在线投稿、查询已投稿件的服务;系统管理具有分配稿件、查询用户和专家信息、下载稿件等功能。
文中给出了详细的系统结构及具体的实现技术。
关键词:期刊投稿系统;JSP;SQL;JDBC
中图分类号:TP311.52文献标识码:A文章编号:1009-3044(2010)18-4943-03
Periodical Contribution Management System Based on B/S
CHEN Ru-hui, CHEN Rong-xi
(College of Mathematics and Information Science, Guangzhou University, Guangzhou 510006, China)
Abstract: A periodical contribution management system based on B/S has been brought into this thesis. The edtorial can use the system to provide users with services, for instance, online submission and querying contributed papers; the system administrator have authority to assign and querry contributions, inquire the information of users and experts, dowload contributions. Concrete structure ofthe system as well as detailed technology of the realization have been revealed in this paper.
Key words: periodical contribution management system; JSP; SQL; JDBC
随着因特网用户的数量迅速增长,利用因特网进行资料查询、投稿、编辑和专家审核的管理系统的应用日趋广泛。
期刊投稿系统采用动态网页技术处理来稿登记、稿件的发送与接收、稿件处理情况查询、稿件评审等等编务工作,可以提高编辑部办公自动化水平和工作效率,增进作者、编辑和专家之间的沟通。
[1-2]
本文介绍的期刊投稿系统是我们针对传统的手工操作模式的不足而开发的,按照编辑日常事务的工作需要,使用Web技术建立一个功能全面的网络化期刊投稿系统。
[3]
1 系统结构设计
在设计过程中,主要利用Tomcat5.0连接MS SQL Sever 2000数据库技术实现期刊投稿系统的开发。
采用的B/S结构(Browser/Server)模式,是一个适用于Internet环境下的模型结构。
其中Dreamweaver MX 2004是系统前台开发环境,MS SQL Sever 2000为系统后台数据基础支持,利用JSP语言实现网页的动态效果和数据库连接。
设置了三级用户:作者,编辑,审稿专家。
每级用户拥有对系统操作的不同权限。
投稿者拥有注册、登录、稿件上传、稿件信息查询等较低的权限;审稿专家拥有登录、审核、稿件信息查询、稿件下载评阅等权限;编辑拥有专家信息录入和维护、专家分配、稿件信息查询、稿件状态维护、稿件发布等权限。
1.1 功能需求概述
期刊投稿系统可以方便地实现:1)在网上投稿、查询审稿状态、提交修改后的稿件;2)将稿
件提交到系统中、审核稿件内容;3)审核编辑稿件、设置稿件处理状态等。
前台功能:为防止作者重复保存投稿的原始记录,第一次投稿前作者必须先注册登记,然后使用注册成功的帐号和密码(或称口令)进行登陆,进入用户模块。
在用户模块中提供了个人信息查询和修改、查看已投稿件状态、上传稿件等服务。
作者只需注册成为系统的一个用户,用自己
的用户名和密码登录系统后,即可完成如下的工作:远程投稿、远程查稿、修改个人信息等。
后台功能:按收到投稿的时间先后顺序,对每一篇作品按照规定的标准进行审阅,决定是否录用,同时发出录用或退稿通知。
1.2 系统总体结构
1)用户模块
用户登陆该模块以后,可以进入投稿页面,把稿件上传到系统服务器中。
稿件基本资料中包含文章标题,文章类型、文章摘要等等。
用户能够查询已投稿件的审稿状态以及个人资料信
息。
用户还具有查看修改个人信息,修改密码等功能。
2)编辑模块
编辑登录以后可以查看所有的待审稿件,在待审稿件列表中,编辑可以为每篇待审稿件分配相应的审稿专家。
编辑在专家审稿完成后,在专家已审稿件列表中可以查询到已审稿件的所有
信息,期间会有初审专家和终审专家进行评阅审核。
编辑还可以根据信息搜索相关稿件,查询用户和专家的个人信息,录入参与审稿的专家和稿件管理的其他编辑等。
3)专家模块
专家登录专家模块后,可以查看个人的详细资料,修改密码。
专家在待审稿件列表中可以查看到编辑分配的待审稿件,专家可下载稿件进行评阅。
专家接受审稿后,在审稿页面中显示稿件的基本信息和详细的审稿内容。
对于专家所对应的评审稿件,专家有权执行删除操作。
根据审核结果,专家可以通过电子邮件向作者反馈反馈审核信息,让作者第一时间了解到自己的稿件的评审情况。
1.3 系统架构细化
将整个系统分成三个大模块:用户模块、编辑模块和专家模块。
用例图展示其中编辑模块实现的功能,如图1所示。
稿件上传:用户在上传页面填写稿件信息,并在文件域中选取上传的稿件。
然后将稿件信息提交给jsp处理页面,把稿件信息存入数据库。
若存储成功,则返回成功信息;否则返回错误提示并要求重新上传。
稿件下载:编辑选择欲下载的稿件将下载命令提交给jsp处理页面,并在数据库中查询稿件的路径。
然后利用SmartUpload组件下载稿件。
若下载成功,则返回成功信息;否则返回失败信息,重新下载。
2 系统测试
功能测试:根据需求分析时的功能要求,对本系统进行测试。
用户注册:用户可以输入自己的详细信息及密码,如果输入为空或者不符合要求,通过javascript检错,返回警告框,提醒用户重新输入。
若系统已经注册该用户则jsp文件处理后报错弹出对话框。
为保证证作者提供的信息真实可靠,在注册页面醒目地标示出信息的用途并会对信息内容保密;为保证信息完整、齐全,设置了必填项目,如真实姓名、年龄、性别、联系电话、电子邮箱等,便于编辑部的后续服务,也为建立用户个人信息资源库提供了数据支持。
整个信息都是填充在一个form表单中,通过jsp中的request内置对象发送给jsp处理页面以实现数据传输,期间,会涉及到一些编码问题,可以将在javascript中编写一个字符译码函数,通过调用该函数以防止网页出现乱码的情况。
上传文件:用户根据要求填写稿件和个人信息并上传文件。
若填写错误,则javascript可以检错。
然后由jsp处理稿件,将信息写进数据库的tb_contribution和tb_tect表中,并把文件上传到硬盘,上传失败则返回具体错误信息。
上传过程是利用common upload组件实现的,通过对表单中的非文件域提取数据,对文件域获取文件来实现稿件上传。
jsp代码将数据从内置对象request中取出,并通过利用preparedStatement把稿件信息写入数据库。
稿件的上传是利用CommonsFileUpload组件调用单一的方法来解析request内置对象,然后处理得到的项目列表。
将request对象中普通表单域的字符写入数据库,文件域内容则通过文件的输入输出流写入服务器的指定位置。
在提交稿件的HTML页面中,基于表单的文件上传请求中包含着一系列规则的列表项目,依据RFC1867 标准编码,所以表单要设置method 和enctype为:method="post" enctype="multipart/ form-data"才可获取文件。
FileUpload组件将页面提交的所有元素(普通表单域和文件域)都定义为FileItem,FileUpload组件可以解析request,并返回所有的FileItem。
服务器端从 request请求得到的是一系列有序的FileItem,为应用程序提供列表项的清单。
每个列表项都实现了FileItem接口,FileUpload组件可以判断出它是普通form表单域还是文件域,然后根据实际需要做相应的处理。
具体实现步骤如下:
1)设置文件的缓冲区和上传区;
2)解析request内置对象;
3)将普通表单域的字符写入数据库;
4)将文件域中的文件上传至服务器指定位置;
5)关闭数据库连接;
以下是文件上传的核心jsp代码:
File tmpDir=new File("c:\\tmpDir");//缓冲区设置
if(!tmpDir.exists())//检查Sub目录是否存在
tmpDir.mkdirs();//建立Sub目录
File saveDir=new File("C:\\tomcat\\webapps\\ROOT\\loadfiles");//上传区设置
if(!saveDir.exists())//检查Sub目录是否存在
saveDir.mkdirs();//建立Sub目录
String uploadroute=null;//上传路径初始化
String downloadroute=null;//下载路径初始化
if(ServletFileUpload.isMultipartContent(request))//判断HttpRequest请求的内容是否属于multipart/form-data类型是则返回true,否则返回false
{
DiskFileItemFactory dff = new DiskFileItemFactory();//创建该对象
dff.setRepository(tmpDir);//指定上传文件的临时目录
dff.setSizeThreshold(1024000);//指定在内存中缓存数据大小,单位为byte
ServletFileUpload sfu = new ServletFileUpload(dff);//创建该对象
sfu.setFileSizeMax(5000000);//指定单个上传文件的最大尺寸
sfu.setSizeMax(10000000);//指定一次上传多个文件的总尺寸
FileItemIterator iter=upload.getItemIterator(request);//获取request中的项目列表
int k=1;
FileItemIterator fii = sfu.getItemIterator(request);//解析request 请求,并返回FileItemIterator集合
String sql="insert into tb_contribution (title,pname,authorname,place,tel,email,
abstract,uploadroute,downloadroute,namefile) values (?,?,?,?,?,?,?,?,?,?)";//数据库插入语句
PreparedStatement pt=(conn.getCon()).prepareStatement(sql);//创建PreparedStatement对
象,conn是数据库连接的javabean
while(fii.hasNext()&k
{
FileItemStream fis=fii.next();//从集合中获得一个文件流
if(fis.isFormField())//判断FileItem实例fis是不是一个普通表单域
{
System.out.print(k);
pt.setString(k++,Streams.asString(fis.openStream(),"gb2312"));//将非文件域的字符放入PreparedStatement中
} else {
String filename = fis.getName().substring(fis.getName().lastIndexOf("\\"));//获得上传文件的文件名
String namefile = filename.substring(stIndexOf("\\")+1);
downloadroute=fis.getName();//获取文件客户端全名(包含路径)
uploadroute="C:\\"+"\\tomcat\\"+"\\webapps\\"+"\\ROOT\\"+"\\loadfiles\\"+"\\"+filename.substring(fi stIndexOf("\\")+1);//指定上传路径
pt.setString(k++,uploadroute);//将上传路径放入PreparedStatement中(第k+1个字段)
pt.setString(k++,downloadroute);//将下载路径放入PreparedStatement中
pt.setString(k++,namefile);//将文件名放入PreparedStatement中
pt.executeUpdate();//执行数据库更新操作
BufferedInputStream cin = new BufferedInputStream(fis.openStream());//获得文件输入流
BufferedOutputStream cout = new BufferedOutputStream(new FileOutputStream(new
File(saveDir+filename)));//获得文件输出流
Streams.copy(cin, cout, true);//开始把文件写到你指定的上传文件夹
pt.close();//关闭PreparedStatement对象
}
}
}
else{
out.print("");//错误信息处理
}
conn.close();//关闭数据库连接对象
2.1 测试结果
系统测试是系统开发必不可少的一个阶段,在开发系统的过程中,难免会出现一些意想不到的错误。
这时系统测试便能很好的发现这些问题,然后再综合分析出错误的原因,才能不断地改正与完善系统的功能。
通过运行录入的数据,检测出程序的漏洞,例如输入格式,输入重复等等。
主要改善的地方是通过javascript语句进行读数据严格约束,减少出错率。
在查找数据时设置错误页面来返回错误信息。
数据量大的在页面显示就采用分页机制,每页10条数据记录。
系统基本能实现设计时的所有功能而且操作简单快捷,但是数据库的约束力较弱,应加强数据的完整性约束以及系统的容错性,从而增加对用户输入端数据的检验。
3 结束语
本文通过设计的系统致力于解决传统期刊投稿的时间和空间瓶颈,以期实现用户,编辑和专家能在尽可能短的时间完成稿件投递,编辑和评估工作。
需求分析中用户要求的各种功能已基本实现,例如,用户注册登录,稿件上传,稿件下载,编辑管理,专家评阅等。
整个操作基本实现了无纸化办公,大量节约了纸张、打印机和邮寄费用,更促进了环保;编务也可以从繁琐、重复的劳动中解放出来,节省了人力资源。
下一步的工作有三方面:1)网上缴费功能的实现还有难度,主要原因是没有和相关公司接洽协商,期望能和支付宝或财付通等第三方支付平台合作实现。
2)数据库系统的安全性除了在用户登录的密码验证外,结合使用手机动态密码发送到手机再登录,进一步提高系统的安全性。
3)稿件顺利通过两轮评审之后,编辑还需将稿件发布到指定的期刊版次和栏目,用户和专家可自行查阅稿件。
参考文献:
[1] 周志新,刘雪立,徐刚珍,等.科技期刊在线投稿应用系统中的问题分析及对策[J].编辑学报,2006(6):435-436.
[2] 张科,王景发.基于B/S架构的期刊稿件粟编管理系统设计[J].图书馆工作与研
究,2008(5):72-75.
[3] 周志新.科技期刊建立在线投稿与审稿系统的目的与原则[J].编辑学报,2005,17(1):54-55.
[4] 马艳春.基于web的高校学报信息管理系统的研究[J].华北科技学院学报,2009,6(2):69-72.
[5] 李彦鹏,郑直,孟卫.基于ASP和SQLServer的在线投稿系统的设计与实现[J].电脑知识与技术,2009,5(20).
[6] 杨思尧.期刊网络在线投稿系统的设计与实现[J].沈阳农业大学学报:社会科学
版,2008,10(4):510-512.
[7] 黄理,李积善,曹林有,等.用JSP轻松开发Web网站[M].北京:科学出版社,2006.
[8] 贾素玲,王强,张成,等.JSP应用开发技术[M].北京:清华大学出版社,2007.。