者说把影响降低到了最小的程度,这样增加了组件的灵活性,可以在不更改视图的情况下,更改控制器,以达到更改视图与用户交互的响应模式,同样,也可以在不改变模型和控制器的情况下改变用户的显示界面,满足用户的显示要求,多个视图能可以共享一个模型。
(2)增加了组件的可移植性。因为模型是独立于视图的,所以可以把一个模型独立地移植到新平台工作,而这样需要做的只是在新平台上对视图和控制器进行修改。
(3)提高了代码和组件的重用性。在基于MVC模式构架的软件中,同一个模型组件可以被多个视图共享,而一个视图可以使用多个模型。
(4)程序的可扩展性。MVC模式的引入,系统的模块化程度高,这些模块之间是松耦合的关系,就象电源的插座、插头,可以很轻松地更换,视图和控制器对象,也可以根据需要动态地打开或者关闭、甚至在运行期间进行对象替换。
2.6 struts框架
2.6.1 Struts框架简介
所谓的框架(Framework)是指软件的架构方式。为框架的体系提供了一套明确机制,从而让开发人员很容易的扩展和控制整个应用的结构,框架是可以进行扩展的软件系统或子系统的半成品
一个成功的软件需要有一个成功的架构,但软件架构的建立是一个复杂而又持续改进的过程,不可能对每个不同的项目做不同的架构,而总是尽量重用以前的架构,或开发出尽量通用的架构方案,Struts就是其中一个。
Struts是一项开放源码项目,它为Java Web应用提供了MVC框架,它是一种适合于多层软件开发项目的,可重用的,易扩展的,而且是经过良好测试的软件框架。Struts为Web应用提供了一个通用的框架,使得开发人员可以把精力用在如何解决实际业务问题上。此外,Struts框架提供了许多供扩展定制的地方,应用程序可以方便的扩展框架,来更好的适应用户的实际需求。Struts由一组相互协作的类(组件)、Servlet以及JSP标签库组成。框架中所使用的组件:
1, ActionServlet控制器,它提供了一个中心位置来主要负责将Http客户请求组装后,根据配置文件指定的描述,转发到适当的处理器。
2, Action响应用户请求,业务逻辑的实现者
3,ActionForm负责封装JSP视图中的表单数据,它的子类的属性与表单中的字段一一对应。
4, ActionMapping帮助控制器将请求映射到Action类,并且将Action类与ActionForm bean相关联。
5, ActionForward用来指示操作转移的对象,就是对将要转向的视图的地址的一个封装。
6, ActionError用来存储和回收错误
7, Struts标记库可以减轻开发显示层次的工作
2.6.2 Struts的配置文件
Struts 的核心是控制器ActionServlet ,而ActionServlet 的核心是配置文件是struts - config.xml( XML即可扩展标记语言,HTML算是它的一个子集,是一种用于创建自定义标记的标记语言) , 主要用于Struts框架的配置,该配置文件的主要作用是建立控制器与模型之间的联系。它描述了控制器将客户请求映射到对应处理的请求法则,同时还描述了客户提供的数据与ActionForm 组件的对应映射关系。此外,该配置文件的另一作用是将逻辑名映射到物理路径,使得物理路径与程序路径无关。在该配置文件中,每个Action的映射信息都通过一个
元素来配置。这些配置信息在系统启动的时候被读入内存,供Struts在运行期间使用。
2.6.3 Struts实现MVC机制
Struts实质上就是在JSP Model2的基础上实现的一个MVC框架。使用Struts框架可以减少使用MVC架构模式来开发Web应用的时间。其开源性,使开发者能更深入的了解其内部实现机制。
在Struts框架中,模型由ActionForm和JavaBean组成,其中ActionForm用于封装用户的请求参数,封装成ActionForm对象,该对象被ActionServlet转发给Action,Action根据ActionFrom里面的请求参数处理用户的请求。JavaBean则封装了底层的业务逻辑,包括数据库访问等;
控制器接受请求并决定将这个请求发往何处,由ActionServlet和Action来实现,ActionServlet类是Struts框架中的核心组件。ActionServlet主要负责接收HTTP请求信息,根据配置文件Struts-config.xml的配置信息,把请求转发给适当的Action对象。如果该Action对象不存在,ActionServlet会先创建这个Action对象。Action类负责调用模型的方法,更新模型的状态,并帮助控制应用程序的流程;
视图由一组JSP文件构成,JSP页面显示数据并负责向模型提交页面数据,在这些文件之中只有标签,还包括Struts框架中的ActionForm Bean。Struts框架利用ActionForm Bean来进行视图和控制器之间表单数据的传递。
2.6.4 Struts工作流程
采用Struts的Web应用,在应用启动时就会加载并初始化ActionServlet,ActionServlet从Struts-config.xml文件中读取配置信息
流程为:
(1) 用户发出一个以. do 作为后缀的HTTP 请求,所有的.do 请求均被控制器ActionServlet 截取
(2) ActionServlet通过对struts-config.xml查询路径的映射,映射标明改请求是否对应FromBean,如果没有,就返回用户请求路径无效的信息。有则查看是否己经生成FromBean实例,如果没有则创建一个,把客户提交的表单数据保存到ActionForm对象中
(3)如果请求FromBean,根据配置信息决定是否需要进行表单验证。如果需要验证,就调用ActionForm的validate()方法,如果验证成功,则进入Action中,否则依照规则返回相应的JSP页
(4) ActionServlet根据根据映射文件ActionMapping实例包含的映射信息决定将请求转发给哪个Action。如果相应的Action实例不存在,就先创建这个实例,Action对象接受请求,从ActionForm中获得数据,然后调用Action的execute()方法,进行数据处理
(5) Action运算结束后,execute()方法返回一个ActionForward对象,依照控制器里的mapping查询,寻找forward的下一个目标,JSP或者另一个Action,进行跳转。
(6)如果完成跳转,结果显示给用户,则完成此次请求。
客户端从发出请求到获得响应整个过程的图解说明如图2.4所示:
图2.4 Struts工作流程
2.6.5 Struts中的数据传递
Struts中的数据传递主要涉及到JSP页面,actionform bean和action类。其中,actionform bean是终结者,它既负责从页面获取数据后提交给action类处理,也负责将action类的处理结果传递给页面。
3具体设计
3.1 需求分析
最近几年,随着教育规模的不断扩大,信息量变得越来越大,使得管理工作量成倍增加,因此,用先进的理念和开发技术设计一种全局性的、能够实现数据共享,减少重复操作,提高管理效率的教学管理系统己经迫在眉睫。
教学管理系统是学生在校期间经常见到并使用的一类系统,通过分析,我们所设计的教学管理信息系统分为七个子系统,有考务管理、基本信息、奖惩管理等。
本文介绍的奖惩管理子系统包括四个模块:奖励登记,奖励查询,惩罚登记,惩罚查询。奖励登记模块功能为:通过选择要录入学生所在专业,年级、班级查询出符合条件的所有学生列表,在该列表中录入获奖学生的奖励类型、奖励级别以及学年、学期等信息;奖励查询用于查询显示获奖学生信息;惩罚部分与之类似。功能模块如下:
图3.1 奖惩管理子系统功能框图
3.2 奖惩管理子系统流程分析
首先在奖励登记页面中选择专业,年级,学年,学期,选择相应的学生进行奖励录入,包括奖励和奖励级别;然后在奖励查询页面中就可以查询到获奖学生的详细信息;在惩罚登记页面中选择专业,年级,学年,学期,选择相应的学生进行惩罚录入,包括惩罚和惩罚原因;然后在惩罚查询页面中就可以查询到受惩学生的详细信息,流程图3.2和图3.3所示:
查询
登记
图3.2 奖励登记、查询流程图
查询
登记
图3.3 惩罚登记、查询流程图
3.3 数据库设计
在我的奖惩管理子系统中,主要创建了两个表:奖励管理表awdManage和惩罚管理表punishManage,引用的有学生信息表stdInfo,专业表Speciality ,年级表Grade,学年表Year,以学生奖励表和惩罚表为例说明表的建立
表3.1奖励管理表awdManage
字段名 字段说明 数据类型 数据宽度 备注 stdAwdID 奖励管理ID int 4 主键,非空 stdNO 学 号 varchar 50 无 stdName 学生 varchar 50 无 stdMajor 学生专业 varchar 50 无 awdName 奖励名称 varchar 50 无 awdType 奖励类型 varchar 50 无 awdDate 登记时间 varchar 50 无 awdYear 学 年 char 10 无 awdTerm 学 期 char 10 无 awdDiscription 奖励备注 varchar 50 无
表3.2 惩罚管理表punishManage
字段名 字段说明 数据类型 数据宽度 备注 stdPunishID 惩罚管理ID int 4 主键,非空 stdNO 学 号 varchar 50 无 stdName 学生 varchar 50 无 stdMajor 学生专业 varchar 50 无 punishName 惩罚名称 varchar 50 无 punishType 惩罚类型 varchar 50 无 punishDate 登记时间 varchar 50 无 punishYear 学 年 char 10 无 punishTerm 学 期 char 10 无 punishDiscription 惩罚备注 varchar 50 无
3.4 组件
在奖惩管理子系统中,用到的组件有:
模型组件:有12个StdInfoBean,YearBean,GradeBean,SpecialityBean,AwdManageBean,PunishManageBean,StdInfoActionForm,YearActionForm,GradeActionForm,SpecialityActionForm, AwdManageActionForm,PulishManageActionForm,DBStdInfoModel, DBYearModel, DBGradeModel, DBSpecialityModel, DBAwdManageModel, DBPulishManageModel
视图组件:有9个
awdPunishManageBar.jsp(奖惩管理子系统页面),awdTree.jsp(奖励登记树结构),pulishTree.jsp(惩罚登记树结构),awdReg.jsp(所选专业学生列表并登记奖励),punishReg.jsp(所选专业学生列表并登记惩罚),regSuccess.jsp(登记成功提示页面)allAwdList.jsp(奖励查询结果及删除页面),allPunishList.jsp(惩罚查询结果及删除页面)
控制组件:4个
中心类Servlet和Action类,有AwdManageAction,PulishManageAction,StdInfoAction
3.5 组件具体设计
下面以奖励登记为例说明组件的具体设计
3.5.1 AwdManageBean的设计
类中包含了StuAward表的各个字段,并包含了相应的set和get方法来设置和获取相应的属性。部分代码如下:
public class AwdManageBean {
private int stdAwdID;//定义对应StuAward表中的字段
......
public void setStdAwdID(int stdAwdID) {//设置每个字段的值
this. stdAwdID = stdAwdID;}
......
public int getStdAwdID() {//获取相应字段的值
return stdAwdID; }
......
}
3.5.2 AwdManageActionForm设计
页面上的用户数据由相应的ActionForm类封装后传递到Action类进行处理。它包括get方法和set方法:set方法用于actionForm类从页面获取数据,而get方法用于action类从actionForm中获取数据。部分代码如下:
public class AwdManageActionForm extends ActionForm{
private String action; //定义对应StuAward表中的字段
private int stdAwdID;
......
public void setAction(String action) {//actionForm从页面获取数据
this.action = action;}
......
public String getAction() {//用于action类从actionForm中获取数据
return action;}
......
}
3.5.3 DBAwdManageModel设计
它是数据库操作类,通过调用数据来操作数据库。在这里需要完成的功能主要是数据的查询、插入、删除。详细代码见附录,先介绍几个核心函数的作用。
alist = this.loadDBs(myDBTrans,key); //获取页面上录入的信息,
return alist; //返回保存信息的列表
this.insertDB(myDBTrans); //想数据库StuAward表中插入录入的信息
return Sys.RESULT_RIGHT; //返回保存信息列表
alist.add(myAwdManageBean); //将页面上录入的信息并保
//存到对应的myAwdManageBean中
3.5.4 AwdManageAction的设计
用户点击发出HTTP请求被控制器获取,根据配置文件信息来选择一个具体的Action来处理具体的业务逻辑。代码见附录。
3.6 配置文件的设计
配置文件一方面进行ActionForm的配置,以AwdManageActionForm为例:
;//定义了ActionForm
// 的名字和类的完全限定名
另一方面进行ActionMapping的配置,:
//定义了请求与相
//应Action的对应关系
//定义了引用//action类的相对路径,转向的jsp页面名称
3.7系统运行过程及效果图
登陆界面如下:
输入用户名及密码,点击登录即可
上一篇:记账系统毕业设计(word文档)
下一篇:基于JSP邮件收发系统论文