本站小编为你精心准备了MVC模式的高校科研管理系统论文参考范文,愿这些范文能点燃您思维的火花,激发您的写作灵感。欢迎深入阅读并收藏。
1Struts2框架
Struts2是一个基于JAVAEE的mvc模式实现经典框架,在Struts2框架中,视图通常由HTML、JSP和Struts2标签表示,JSP页面结合Struts2的标签库构成了视图组件的主体;模型由实现业务逻辑的JavaBeans或EJB组件构成;控制器由核心控制器、业务逻辑控制器Action以及struts.xml配置文件共同组成,其中核心控制器是由Struts2框架提供的一个过滤器(StrutsPrepareAndExecuteFilter),负责接受用户请求,并根据struts.xml调用Action,以及根据Action返回的逻辑结果和struts.xml的结果配置分派请求给视图页面。Action是开发人员自定义的一个类,负责调用模型响应用户请求,并返回逻辑结果。客户端和后台的数据交互通过Action类的属性的setter和getter方法来实现。工作原理如图2所示。从图2我们可以看到,模型以及Struts2的业务逻辑Action都没有与物理视图直接关联,其中的Action只负责返回执行结果,该执行结果与怎样的视图资源关联,是由核心控制器和配置文件来决定的。这种做法可以提供很好的解耦,当需要将某个逻辑视图映射到不同的视图资源时,无须修改Action的代码,只要修改配置文件就可以了。开发人员使用Struts2实现控制器主要是创建业务逻辑控制器Action来调用Model实现业务逻辑处理、获取模型数据以及返回用于映射物理视图的逻辑视图。
2系统设计
2.1系统功能设计高校科研管理系统在功能上包括组织管理、立项管理、项目管理、成果管理、知识管理、权限管理、流程管理和系统管理八个功能模块,系统功能模块结构如图3所示。
2.2系统总体框架高校科研管理系统采用B/S架构,使用Struts2作为MVC架构实现。按照MVC设计模式的抽象方法,根据图3所示系统的功能模块结构图,可建立如图4所示的系统总体框架。部门管理视图、人员管理视图、知识管理视图、系统管理视图和权限管理视图为系统管理员提供交互界面,负责接受系统管理员用户的操作请求,以及将请求的处理结果呈现给系统管理员;项目管理视图、立项管理视图为科研人员、科研管理员、评审专家和主管院长提供交互界面,负责接受这些用户的操作请求,以及将请求的处理结果呈现给请求的用户;流程管理视图给科研管理员提供交互界面,负责接受科研管理员用户的操作请求,以及将请求的处理结果呈现给科研管理员。系统控制器由核心控制器StrutsPrepareandExecuteFilter、针对不同模块创建的业务逻辑控制器Action类以及struts.xml配置文件。核心控制器接受用户动作请求,并通过查询struts.xml文件后将请求转发给请求的Action实例,Action实例接收请求后调用模型的业务方法,业务方法执行后返回结果给Action,Action根据业务方法执行结果返回一个逻辑结果,核心控制器根据逻辑结果查询struts.xml的结果配置,选择视图页面。
3系统实现
系统功能设计:基于MVC模式的高校科研管理系统中每一个模块都利用了Struts2框架实现流程的控制,严格按照MVC分层模式来设计,实现业务逻辑和表现层逻辑的分离。下面以部门管理为例,详细说明使用MVC的设计实现。
3.1业务逻辑控制器Action的实现部门管理的业务逻辑控制器由DepartmentAction类来实现,该类的主要作用是调用业务逻辑类DepartmentServiceImpl的业务方法响应用户发来的各种操作请求,同时与各个视图页面实现数据的交互。DepartmentAction动作类中包括了addInput()、add()、updateInput()、update()、delete()和list()等业务处理方法,其中addInput()方法用于打开添加部门的JSP表单页面,提交添加的部门信息到动作执行添加前,首先调用setDepartment()将部门的各个信息封装到department对象,并将department对象暂存在动作类的成员变量department中,最后再调用department!add.action动作执行add()方法添加信息;add()方法通过调用DepartmentServiceImpl类的saveOrUpdateDepartment()方法实现持久化一条部门信息;updateInput()用于打开部门信息更新的JSP表单页面,提交更新后的部门信息到动作执行更新前,首先调用setDepartment()将部门的各个信息封装到department对象,并将department对象暂存在动作类的成员变量department中,最后再调用department!update.action动作执行update()方法更新信息;update()方法通过调用DepartmentServiceImpl的saveOrUpdateDepartment()方法更新部门信息;delete()方法调用了DepartmentServiceImpl类deleteDepartment(),实现对指定ID的部门信息的删除,如果该部门存在下属部门,则不允许删除;list()方法调用DepartmentServiceImpl类listDepartments()来获取某一级部门下的所有部门信息,如果所指定级别的部门的ID为0,则返回所有顶级部门的信息,最后返回“list”逻辑结果。在struts.xml文件中配置<resultname=”list”>/department/departmentList.jsp</result>,这样就可以在动作返回“list”逻辑结果后,让核心控制器将请求分派给站点根目录下的department目录下的departmentList.jsp物理视图。动作类中的add()、update()和delete()三个方法执行后都返回“success”逻辑结果,返回该结果后流程将重定向调用department!list.action动作执行list()方法,这样,可以让用户实时看到自己的操作结果。系统使用了动态方法调用的方式来访问动作实例,故可在struts.xml中对DepartmentAction进行如下的配置。
3.2模型层(Model)的实现高校科研管理系统的模型层使用了面向接口编程的方式来提高系统的灵活性,同时按负责内容的不同,将其细分为业务逻辑层和数据持久层。业务逻辑层负责实现业务功能以及调用持久层方法实现数据的持久化,为动作提供服务,包括DepartmentService接口和DepartmentServiceImpl实现类。数据持久层封装了数据的CRUD操作,包括DepartmentDao接口和DepartmentDaoImpl实现类,其中包括了添加部门信息方法addDepartment()、更新部门信息方法updateDepartment()、按指定部门ID查找部门信息方法findDepartment()、删除指定ID的部门信息方法deleteDepartment()和获取某一部门的所有下属部门信息方法listDepartments()。
3.3视图层(View)的实现视图层决定如何将数据展示给用户,高校科研管理系统的视图部分主要是JSP页面,包括列表某一部门的所有下属部门的departmentList.jsp页面、添加部门信息的表单页面add_input.jsp和更新部门信息的表单页面update_input.jsp。这些JSP页面中使用了Struts2标签和OGNL表达式。departmentList.jsp使用了<s:iteratorvalue=”departments”>Struts2标签来迭代输出每个部门的信息。Web服务器在解释departmentList.jsp过程中,当遇到<s:iteratorvalue=”departments”>标签时,会根据departments这个OGNL表达式,来调用动作类中的getDepartments()来获得暂存在动作类成员变量departments中的值。在add_input.jsp页面中的每个表单域的name属性值均使用了“department.属性名”(如:department.name)这样的OGNL表达式,这样在用户输入完各个信息点击提交按钮将信息提交给department!add.action动作处理时,动作根据表单域的OGNL表达式,首先执行setDepartment()将部门的各个信息封装到department对象,然后再将department对象暂存在动作类的成量变量department中。在update_input.jsp页面跟add_input.jsp页面很类似,主要不同的地方是在该页面表单中包含了所要更新的部门的ID及其上级部门的ID,点击提交按钮后,更新后的部门信息提交给department!update.action动作处理,在执行该动作之前,同样根据表单域的OGNL表过式,首先执行setDepartment()将部门的各个信息封装到department对象,并将该对象暂存在动作类的成量变量department中。add_input.jsp和update_input.jsp通过setDepartment()就完成了将用户输入的数据传递给动作进行处理的任务,而departmentList.jsp则通过getDepartments()方法完成将动作获取的模型数据传递给视图的任务。setDepartment()和getDepartments()方法的调用全部通过Struts2提供的拦截器自动实现,无需开发人员作任何的工作。另外,在调用setDepartment()方法进行设值前,Struts2对用户提交的各个信息自动进行类型转换,类型转换不成功时自动将错误提示信息封装为字段级别的错误信息,并自动显示在相应的Struts2表单域标签上面。可见,对于客户端和后台数据的交互、以及类型的转换等常规功能Struts2都已帮我们实现了,因而可以很大程度上提高我们的开发效率。
4结束语
MVC模式具有一个模型对应多个视图、业务逻辑和显示逻辑分离、不同组件被分隔在不同的层中等特点,这些特点为软件开发提供了许多优良性能,诸如:模块耦合度低,可扩展性、可维护性和代码重用性都比较高。开发高校科研管理系统的实践证明,使用基于MVC模式的Struts2框架,可以有效保障软件可扩展、可维护性安全性等软件质量,同时通过使用Struts2所提供的基础功能以及Struts2标签和OGNL表达式等技术还可以简化系统的开发,极大的提高开发效率。
作者:聂常红张屹李宝智单位:广州大学华软软件学院