基于Struts与Hibernate的学生管理系统的设计与实现

2022-09-11

近年来随着高等学校规模的扩大, 学生人数也随之增多, 在校学生的教育与管理上了新台阶。目前大多数学校已实行校、院两级管理, 学校迫切需要建立一个学生管理平台, 以实现更为规范的、系统的、科学的管理。随着互联网络的发展和普及, 拥有众多优势的B/S/架构在应用程序的开发中得到迅速的推广和应用。与此同时, 随着W e b开发技术的日趋成熟, 在W e b开发领域也出现了一些优秀的框架, 而Struts与Hibernate就是两个比较成功的框架。本文详细分析了Struts与Hibernate的原理与性能特点, 将其引人到学生管理软件的开发中。框架的应用可以提高软件开发的速度和效率, 使系统具有更好的可扩展性、易维护性、可复用性和可移植性。

1 系统设计

1.1 系统功能模块

为满足高校中学生管理的需求, 本系统的功能包括以下几个部分。

(1) 基础信息管理功能。实现对学校基本情况的电子化管理, 包括对院、系、专业、班级各个级别信息的管理以及学校开设的课程信息的管理。

(2) 学生信息管理功能。实现对学生信息的电子化管理, 包括对学生基本信息的管理、学籍信息的管理、成绩的管理以及奖惩信息的管理。

(3) 查询与统计功能。实现对上述两个部分中的学生相关信息的查询与统计, 如学生成绩的查询与统计等等。

(4) 系统管理功能。实现基于角色控制的权限分配的用户管理、系统数据的备份与恢复, 以保障系统的运行安全以及数据的真实性和安全性。

1.2 系统体系结构

本系统是基于Struts框架与Hibernate框架来设计与实现的, 集成两框架弥补其各自的不足, 充分发挥各自长处, 实现了基于W E B的灵活性与可维护性很好的五层架构体系, 即表示层、控制层、服务层、持久层和数据层。

1.2.1 MVC框架Struts

MVC (model-view-controller模型-视图-控制器) 是一种软件设计模式, 它能够有效地降低系统耦合度, 实现代码重用。MVC模式包括三个层面:模型 (Model) 、视图 (View) 、控制器 (Controller) 。Model组件执行业务逻辑或操作, 并存取视图数据。View组件从Model层获得数据, 并指定这些数据的表示方式。Controller组件负责定义应用程序的行为, 控制着模型和视图之间的交互过程, 它决定着向用户返回怎样的视图。

Struts是Apache软件组织开发的一个开源框架, 实质上就是在JSP Model2的基础上实现的一个MVC框架[1]。在这个框架中, 模型由实现业务逻辑的Java Bean或者EJB构成, 控制器由Action Servlet和Action来实现, 视图由一组J S P文件构成[2]。

1.2.2 O/R映射框架Hibernate

Hibernate是一个开放源代码的对象关系映射框架, 它对JDBC进行了非常轻量级的对象封装, 使得J a v a程序员可以随心所欲的使用对象编程思维来操纵数据库[3]。Hibernate可以应用在任何使用JDBC的场合[4], 既可以在J a v a的客户端程序使用, 也可以在Servlet/JSP的Web应用中使用。

1.2.3 集成Struts与Hibernate

Struts架构实现了MVC设计模式, 解决了视图层、业务层和控制层的分离。通过利用S t r u t s控制器部分的配置文档, 业务流程可以不再硬编码到源程序中去, 这使得维护性和灵活性大大加强。但在模型部分, 它仅仅提供一个Action类, 让这个类来“瘦包装”所有的后台业务逻辑, 因此S t r u t s对模型部分的支持还有所欠缺。而Hibernate来说, 它完全只提供模型部分支持, 如果仅仅采用Hibernate框架开发应用系统, 系统只会在业务模型部分有所改善, 但是系统的逻辑处理、流程控制与视图并没有得到有效分离, 因此系统的耦合性还是太高, 不易于维护。将这两个架构有效整合在一起, 让S t r u t s负责降低系统总体架构的耦合性, 而让Hibernate负责降低业务模型部分的开发难度, 从而消除了单独使用这些架构开发系统的不足[5]。

将Struts框架与Hibernate框架结合使用, 以Struts作为应用系统的整体基础架构, 实现MVC模型, 数据持久层由Hibernate框架实现, 如图1所示。

2 系统实现

学生管理系统以E c l i p s e为开发工具, 实现了架构清晰的J2EE应用。接下来简述系统的实现过程, 系统中各个模块的实现方法类似, 本文以“学生信息管理”中的“学生成绩管理”为例来阐述实现过程。

2.1 数据层与持久层的实现

数据层的实现就是搭建数据库, 主要包括建立数据库表、视图、存储过程等工作。以学生成绩管理为例, 主要工作是在数据库中建立学生成绩表Stu Score。

持久层的实现主要包括编写P O J O类、Hibernate映射文件、数据访问类DAO以及Hibernate配置文件。以学生成绩管理为例, 首先编写学生成绩的P O J O类S t u S c o r e.J a v a;然后建立S t u S c o r e表与P O J O类Stu Score的映射文件Stu Score.hbm.xml;接下来建立学生成绩的数据访问类Stu Score DAO.java, 它调用Hibernate API实现了对学生成绩的创建、查询、更新、删除等等方法;最后建立Hibernate映射文件hibernate.cfg.xml, 其关键代码如下:

2.2 服务层的实现

在服务层, 编写业务逻辑类调用采用Hibernate架构实现的DAO类来访问数据库, 从而实现系统的业务需求。以学生成绩管理为例, 编写Stu Score Service.java, 调用类Stu Score DAO来实现学生成绩管理相关的业务逻辑, 包括对学生成绩的增、删、改、查询与统计等等。

2.3 表示层与控制层的实现

表示层主要是建立相关的J S P页面实现与用户交互。以学生成绩管理为例, 建立Stu Score Edit.jsp分别用于学生成绩的编辑, 这些页面中包括用于学生成绩编辑的Action Form Stu Score Edit Form。

控制层的实现主要包括编写W e b应用配置文件web.xml、以及Struts配置文件struts-config.xml。首先编写web.xml, 在其中声明Action Servlet;然后建立Action类, 在A c t i o n类调用业务逻辑类从而将控制层与服务层连接起来;最后建立Struts配置文件struts-config.xml, 在其中配置请求与Action类的映射以及页面跳转ActionForward。以学生成绩管理中的成绩修改为例, 当从Stu Score Edit.jsp发出Action请求后, Action Servlet会通过查找strutsconfig.xml配置文件实现请求 (*.do) 到Action的映射, 由Action调用业务逻辑的服务组件, 根据处理结果跳转到F o r w a r d对象指定的响应, 这一流程在s t r u t sconfig.xml配置如下:

3 结语

综合的学生信息管理系统业务比较烦琐, 在系统的设计与实现中, 集成两种开源框架Struts和Hibernate来搭建此J2EE应用, 实现了基于W E B的灵活性与可维护性很好的五层架构。其中, 采用Struts很好地把业务逻辑和表示层分离, 采用Hibernate框架完成了对象和关系之间的映射, 使得开发人员专心地实现业务逻辑而不用分心于繁琐的数据库方面的逻辑。这两个框架结合起来充分发挥了两者的优点, 基于这两个框架的Web架构开发简洁、结构清晰有很好的可扩展性和可维护性, 非常适于面向对象的设计与开发;也为开发小组提供更合理的模块划分方法, 利于节约开发成本和时间, 提高业务应用的性能。

摘要:集成Struts框架与Hibernate框架设计学生管理系统, 实现了基于WEB的灵活性与可维护性很好的五层架构体系。学生管理系统实现了基础信息管理、学生信息管理、查询与统计以及系统管理等功能, 较好地满足了高校学生信息管理的需求;以系统中一个模块的实现为例说明系统开发过程。

关键词:Struts,Hibernate,学生管理系统,五层架构体系

参考文献

[1] Apache.http://struts.apache.org.

[2] 孙卫琴.精通Struts:基于MVC的JavaWeb设计与开发[M].电子工业出版社, 2004.

[3] 夏听, 曹晓钢, 唐勇.深入浅出Hibernate[M].电子工业出版社, 2005.

[4] Hibernate.http://www.hibernate.org.

[5] 吴岳, 翁敬农.用Struts和Hibernate构筑Web应用开发策略[J].计算机工程与设计, 2006, 27 (7) :1176~1179.

上一篇:通脉降糖软胶囊联合西药治疗糖尿病周围神经病变30例临床疗效观察下一篇:浅谈制图课改革新思路