微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 投稿与审稿系统的设计与实现

投稿与审稿系统的设计与实现

时间:12-09 来源:互联网 点击:

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是投稿成功后,按照编辑人员审稿的流程操作的测试结果。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top