《电子技术应用》
您所在的位置:首页 > 嵌入式技术 > 业界动态 > 基于Struts框架的高校网络教务信息系统设计

基于Struts框架的高校网络教务信息系统设计

2008-06-24
作者:郁 雪1,常 鹏1,2,董旭

  摘 要: 以天津大学校园信息化建设为背景,研究了基于J2EE技术和MVC经典软件模式的STRUTS构架体系,应用于综合教务管理信息系统中网络教学" title="网络教学">网络教学平台的开发与实现,体现出struts技术在Web应用开发中的强大功效。
  关键词: Struts框架 模型-视图-控制器 Web应用 教务系统


  信息社会的发展使人们越来越依赖网络,而网络技术已经成为当前的主要发展趋势。随着校园信息化建设的发展,校园网规模不断扩大,网络用户越来越多,通过网络来共享学校提供的资源和使用学校提供的服务。教务管理工作是高等学校的重要工作之一,随着网络和计算机技术的快速发展以及高校教育体制的不断更新,天津大学的教务信息管理系统TMIS(Teaching Management Information System)为了适应新的业务需求,利用先进的规范化管理手段和信息技术不断地进行自我改进,但以往TMIS都是以Client/Sever技术为主,主要的教学管理工作都是由各学院的教务人员通过Client端负责完成。对于教师和学生直接参与的教学活动,如教学资源共享、选课管理和成绩管理等,需要打破以前的管理模式,从C/S结构中分离开,打造一个面向全体师生的可随时异地互动的网络教学平台。天津大学根据自身的特点,结合多年的管理系统开发经验,设计开发了一个集C/S 技术与 B/S技术于一体的综合教务信息管理平台。基于C/S的管理系统提供了强大的管理功能,其具体的设计方案请参见参考文献[1]。为了解决Web应用开发过程中的开发效率缓慢、代码重用效率低、维护代码繁琐、扩展性差等技术问题,本文采用MVC(Model,模型,View,视图,Controller,控制器)这种经典设计模式" title="设计模式">设计模式应用到开发天津大学网络教学平台中,并使系统构架在目前最流行的Struts Framework之上。本文将详细讨论struts技术作为一个良好的MVC框架,在实际Web开发和设计中的应用,并且凸显出自己独特的开发优势。
1 Apache Struts Framework概述
1.1 JSP Model 2简介

  JSP Model 2是Java Web技术与MVC设计模式相结合的开发模型[2]。MVC 模式的概念,即三个组件相互分离,当模型的数据发生变化时,控制器会通知视图进行刷新。MVC模式的出现实现了功能模块和显示模块的分离,提高了设计、开发的灵活性、可复用" title="复用">复用性和易维护性。
  JSP Model 2利用Servlet、JSP及Bean/EJB实现MVC结构,分别对应着Controller、View和Model。其中使用Servlet接受请求,Servlet控制用户的提交请求和输出的回应,而JSP页面只作为显示层,Bean/EJB用作业务处理(事务处理或数据处理)。通过这种设计模式将对数据的显示和业务逻辑的处理分开,使得整个系统的逻辑结构更清晰合理,易于扩展和维护。
1.2 Struts Framework的组成
  Struts是免费使用的基于J2EE标准的开发框架(framework),它充分体现了JSP Model 2的设计思路,并根据Web应用和J2EE的特性做了适当的扩展。Struts是Apache组织的项目之一[3],其代码开发是从2000年5月份开始的,到2001年6月,struts 1.0版本发布,至今为使用MVC体系开发Web应用提供了一个良好的框架。
  Struts包含了丰富的标记库和独立于该框架工作的实用程序类,其中起关键作用的类有ActionServlet,Action,ActionMapping,ActionForm和ActionError。Action-
  Mapping类通过用户定义的配置文件描述,允许ActionServlet将用户的请求转变为应用行为,根据映射的业务逻辑调用与之对应的模型进行后台数据处理,完毕后由模型将结果返回至指定视图。由此,struts框架通过核心组件的协同工作充分体现了M-V-C模式思路。
1.3 配置struts组件
  典型的struts应用要用到web.xml、struts-config.xml和可选的应用资源文件三种配置文件。开发人员必须创建或者修改,使得Struts应用能够运转起来。
  Web.xml是web应用的标准配置文件,是所有J2EE Web应用必需的组成部分,Servlet/JSP容器使用这个文件来载入和配置相应的应用。Struts框架有ActionServlet和标签库两个组件需要使用从应用部署描述符中配置(可选)。
  Struts-config.xml是struts应用中最重要的配置文件,其中包含Action处理类、FromBean以及页面的转向等信息的配置。可以说Struts应用是一个依靠struts-config.xml文件把组件连接起来的网络。struts-config.xml文件提供将逻辑名映射到物理路径,使得物理路径与程序路径无关,整个系统使用的逻辑名在Struts-config.xml中完成。尤其在大型Web应用中,对于系统维护和升级,这种管理页面的方式显示出其方便性和有效性。
1.4 Struts的处理流程
  (1)客户通过浏览器访问JSP页面,并填写好表单" title="表单">表单,向服务器端发出请求。
  (2)控制器ActionServlet截获该请求(以.do结尾的http请求),根据struts-config.xml中的配置信息查到与该请求相对应的ActionForm和ActionClass,并使用前者封装用户提交的表单数据,传递给后者使用。
  (3)ActionServlet调用ActionClass的Execute( )方法来进行业务逻辑处理。即用JavaBean/EJB来封装具体的业务操作,并提供业务逻辑接口,从而实现业务模块" title="业务模块">业务模块的重用与分离。
  (4)根据Action处理的结果,返回一个ActionForward给ActionServlet,如果ActionForward指向另一个Action请求,重新开始;通常是forward到另一个JSP页面。
2 基于struts框架高校网络教学平台的具体实现
2.1 功能模块设计

  天津大学OnLine-TMIS网络教学平台采用了基于MVC模式的Struts框架技术,应用了四层体系结构的设计方案。功能设计上主要针对教学实施环节的设置,实现教师和学生之间的随时随地通过系统进行教学互动。
  OLTMIS主要功能模块有:(1)用户登陆模块,用于权限保护和角色分配;(2)选课管理模块;(3)成绩管理模块;(4)作业管理模块;(5)课程信息管理模块;(6)教学质量评价模块等,如图1所示。


2.2 系统的构架设计
  鉴于Web系统的跨平台性、可扩展性以及程序代码的重用性,本文采用J2EE平台和Struts框架技术来开发整个系统,分为四层结构。从下到上各层功能描述分别是:
  (1)资源层:以数据库的形式提供集中统一的数据。包括教务教学数据库和教学资源数据库;采用Oracle 9i数据库的解决方案。
  (2)业务逻辑层:对应模型组件,处理具体的事务流程,根据制定的业务逻辑处理从表示层或数据层传来的数据,然后根据控制层的调度将数据流转向数据层或表示层。可细分为业务组件层、公共组件层两个子层。其中业务组件层是指按照不同业务逻辑创建的不同的类,实现具体的各种业务逻辑;公共组件层是公共调用的一些基础类的包,通过这些bean可以实现对数据库的查询、修改等功能。
  (3)控制层:对应控制器组件,Action Servlet用来实现业务流的控制,根绝表示层的请求,将数据转入相应的业务模块,再将业务模块处理的数据结果传回表示层。
  (4)表示层:对应视图组件,用于生成页面,用来收集用户和系统的交互信息或者显示业务模块处理的数据结果。利用JSP技术,广泛使用STRUTS的自定义标签库,使代码更为简化更为标准。
2.3 Struts框架的具体实现
  为了实现上述功能模块,这里应用Struts框架设计出系统的运作流程和基本的配置文件。具体实现步骤为:
  (1)定义ActionMappings建立到应用业务逻辑之间的联系。
  (2)设计满足View需求的所有支持对象。
  (3)基于每一个显示对象提供的数据属性来创建对应的ActionForm对象。
  (4)设计被ActionMapping调用的Action对象。
  (5)设计应用业务逻辑对象(Bean/EJB)。
  (6)对应ActionMapping设计的流程创建JSP页面。
  (7)根据设计内容建立合适的配置文件struts-config.xml和web.xml。
  (8)开展编码、应用测试和部署。
  以选课为例,学生登录后进行选课操作,如图2所示ActionServlet截取学生选课确认的HTTP请求,通过struts-config.xml中定义的映射关系(ActionMappings)找到与请求对应的SLLSFormBean进行数据封装;通过SLLSActionBean的execute()入口方法调用选课处理模块。处理的结果forward到事先指定的页面,在浏览器中回显给用户。如果系统运行中出现错误,例如Action处理类运行错误,都会封装到ActionError类中一起返回给页面(struts专门提供进行错误处理的类)。


  其中主要用到的实际编写代码的文件有:
  (1)StuSlls.jsp:提供需要填写的表单。
  (2)SLLSForm.java:用于封装数据。
  (3)SLLSAction.java:处理类。
  其中核心代码如下:
  public ActionForward execute(ActionMapping mapping,
  ActionForm form,HttpServletRequest request,
  HttpServletResponse response) throws Exception {
  //===check Session===//
  //选课和退课的业务操作,需要访问数据库则调用
  //数据库访问组件//
   }
  (4)所有对数据库操作都封装在Database类中,
  public class Database {
  public void setConnection()
  public Connection getConnection()
  public void setStatement()
  public Statement getStatement()
  public ResultSet SelectQuery(String sql)
  throws Exception
  public void UpdateQuery(String sql) throws
  Exception
  public void closeConnection() throws Exception
  }
  其中ActionServlet(Controller)的核心是Struts-config.xml,所有的映射关系将在这里进行统一配置。尤其是在开发大型复杂的Web应用,对struts-config.xml要做综合全面的考虑。这里提供一些核心配置片断,使用的版本是Struts 1.1。
  <?xml version=′1.0′ encoding=′GBK′?>
  <!DOCTYPE struts-config PUBLIC ″-//Apache Software
  Foundation//DTD Struts Configuration 1.1//EN″ ″http://jakarta.
  apache.org/struts/dtds/struts-config_1_1.dtd″>
  <struts-config>
  <!-------Form Bean Definitions ------>
  <form-beans>
  <form-bean name=″LogonForm″
  type=″tju.mic.teaching.action.LogonForm″/>
  <form-bean name=″SllsForm″
  type=″tju.mic.teaching.action. SllsForm″/>
  <form-bean name=″StuAchvForm″
  type=″tju.mic.teaching.action.StuAchvForm″/>
   ……
   </form-beans>
  <!-------Global Forward Definitions ------>
  <global-forwards>
  <forward name=″Welcome″ path=″/logon.jsp″/>
  </global-forwards>
  <!--------Action Mapping Definitions -------->
   <action-mappings>
   <action name=″LogonForm″path=″/logon″
  input=″/logon.jsp″ scope=″request″
  type=″tju.mic.teaching.action.LogonAction″>
  <forward name=″student″ path=″/student.jsp″/>
  <forward name=″teacher″ path=″/teacher.jsp″/>
  </action>
  <action name=″SllsForm″ path=″/stuslls″
  input=″/student/slls.jsp″ scope=″request″
  type=″tju.mic.teaching.action. SllsAction″>
  <forward name=″Forward″
  path=″/student/slls.jsp″/>
  </action>
  ……
  </action-mappings>
  ……
  </struts-config>
  Struts框架提供了完整的实用程序类(系统状态类FormBean、动作类ActionBean和控制器类Servlet),只需对其进行配置,以及根据具体业务需求,对类进行扩展即可。另外struts提供的丰富的标记库与属性文件使JSP页面设计与业务逻辑实现彻底分离,开发人员能够集中精力各尽其责,体现出基于框架开发的高效性和易维护性。
  另外为了保证系统的可扩展性和可重用性,增强代码的规范度,本文采用组件设计思想,设计了大量的通用模块,基础类的包,其中包括了数据库访问组件、用户管理组件、统一认证组件等。同时引入了软件工程中协作开发的概念和方法。设计之初只定义出类的接口和方法,因此在编写代码阶段可以由不同人员负责不同组件及不同模型部分的开发,并引入软件生命周期模型,使整个开发过程实现流水线管理。
  本文论述了在开发天津大学网络教学平台过程中使用先进的Struts框架技术,充分贯彻MVC这一经典的软件开发模式。实践证明,整个软件开发周期明显缩短,并大大提高了代码的可维护性和可复用性。并为逐步创(接上页)
  建校园级的协同信息平台提供了一条有效的开发设计思路和统一的技术规范,推动了校园信息化的进程。
参考文献
1 王 赞,金志刚,董旭源.基于构件技术的教务信息系统的设计与实现.微处理机,2004;(1)
2 陆 荣,郁 洲,阮永良等.J2EE平台上MVC设计模式的研究与实现.计算机应用研究,2003;(3)
3 Struts Tutorial[EB/OL].http://struts.apache.org/

本站内容除特别声明的原创文章之外,转载内容只为传递更多信息,并不代表本网站赞同其观点。转载的所有的文章、图片、音/视频文件等资料的版权归版权所有权人所有。本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如涉及作品内容、版权和其它问题,请及时通过电子邮件或电话通知我们,以便迅速采取适当措施,避免给双方造成不必要的经济损失。联系电话:010-82306118;邮箱:aet@chinaaet.com。