摘要:基于B/S模式的NCRE网上报名系统可提高工作效率。研究了Struts框架的工作机制及流程。给出了NCRE网上报名系统的功能设计。阐述了基于Struts的报名系统的部分实现。最后给出了系统的开发平台并展示了运行效果。
关键词:网上报名;Struts框架;功能设计;系统实现
中图分类号:TP393 文献标识码:A 文章编号:1009-3044(2013)04-0709-03
Design and Implementation of NCRE Online Registration System Based on Struts
GENG Wei,WANG Jing,WU Lei, ZHAO Qiang
(Xuzhou Medical College,Xuzhou 221004,China)
Abstract: NCRE online registration system based on B/S pattern can improve work efficiency. The work mechanism and work flow of Struts framework are researched. The function design of NCRE online registration system is presented. Some system implementations of NCRE online registration based on Struts are discussed. Last, development platform and running effect are shown.
Key words: online registration; Struts framework; function design; system implementation
全国计算机等级考试(National Computer Rank Examination,简称NCRE)原有的考务系统采用C/S模式架构,使用其进行报名工作效率非常低下。当前,互联网技术已经非常普及。充分使用网络资源、改变先前的报名方式、采用网上报名,是更为高效的方式,也是发展趋势。
Java技术由于其良好的可移植性和安全性得到了广泛的应用。在一个项目的开发中,利用框架技术可以提高软件开发的速度和效率,而且有利于软件后期的维护。基于Java平台的Web框架有许多,如Struts、JSF、Struts2、Spring等。在这些框架中,Struts框架在Java Web应用的开发中有相当大的用户群,成为受欢迎的Java Web MVC模式框架之一。
本文对Struts框架技术在Web应用开发中的工作机制及流程进行研究,并对其在NCRE网上报名系统中的设计与实现进行论述,为NCRE网上报名系统的设计与实现提供了一种解决方案。
1 Struts框架工作机制及流程
Struts是一个基于MVC模式的Java Web框架。MVC模式强制性地把应用程序的输入、处理和输出分开,把应用程序分成三个核心模块:模型、视图和控制器。在Struts框架中,模型由实现业务逻辑的JavaBean或EJB组件构成,控制器由ActionServlet和Action来实现,视图由一组JSP文件构成。如图1所示。
图1 Struts实现的MVC框架
基于Struts框架的Web应用在启动时就会加载并初始化ActionServlet,ActionServlet从struts-congif.xml文件中读取配置信息,把它们存放到各种配置对象中。当ActionServlet接收到一个客户请求时,将执行如下1~7流程。
1)检索和用户请求匹配的ActionMapping配置对象,如果不存在,就返回用户请求路径无效的信息。
2)如果ActionForm对象不存在,就创建一个ActionForm对象,把客户提交的表单数据保存到ActionForm对象中。
3)根据配置信息决定是否需要表单验证。如果需要验证,就调用ActionForm的validate()方法。
4)如果ActionForm的validate()方法返回null或返回一个不包含ActionMessage的ActionErrors对象,就表示表单验证成功,执行5、6、7三步。如果ActionForm的validate()方法是返回一个包含一个或多个ActionMessage的ActionErrors对象,就表示表单验证失败,那么ActionServlet将直接把请求转发给包含用户提交表单的JSP组件。在这种情况下,不再执行5、6、7三步。
5)ActionServlet根据ActionMapping对象包含的映射信息决定将请求转发给哪个Action。如果相应的Action对象不存在,就先创建这个对象,然后调用Action的execute()方法。
6)Action的execute()方法返回一个ActionForward对象,ActionServlet再把客户请求转发给ActionForward对象指向的JSP组件。
7)ActionForward对象指向的JSP组件生成动态网页,返回给客户。
2 系统功能设计
原有的考务系统基于C/S模式。其报名的方式是让所有学生到现场进行照片的采集和报名信息录入。采用这种方式进行报名非常耗时,从而造成报名现场排起长队进行等待的现象。针对上述的问题,对NCRE的网上报名系统提出以下设计思想:
使用B/S模式应用进行报名。将报名的过程分为网上预报名和信息确认两个阶段。在网上预报名阶段,让分散在各处的考生提前将自己的报名信息通过互联网录入报名系统中。在信息确认阶段,考生集中到指定地点进行交费、信息核对、领取报名回执等。
总体上,NCRE网上报名系统的功能分为考生和考务两大模块,从功能上分为:预报名、信息确认以及系统管理。具体功能见图2所示的NCRE网上报名系统功能图。
图2 NCRE网上报名系统功能图
3 系统实现
3.1 页面布局
一个应用系统的各页面最好具有统一的风格布局。NCRE网上报名系统采用如图3所示的网页布局。header区域为页头区,footer区域为页脚区,sidebar区域为功能菜单区,content区域为内容区。
图3 网页布局示意图
基于以上布局的页面,其header和footer两个区域的内容基本不变化,变化最多的是content区中的内容。为简少HTML页面代码的重复使用,本系统的页面设计使用了Struts的Tiles子框架。Tiles是功能强大的JSP模板框架,它能够简少HTML页面代码的重复使用。使用Tiles可以将JSP页面分解为单个“Tiles”或部分,然后可将各部分粘合在一起创建一个组合页面。Tiles框架将网页的布局和内容分离,为Web页面的创建提供了一种模板机制,允许先创建模板,然后在运行时动态地将内容插入到模板中。
本系统中使用的布局文件为layout.jsp,使用表格来对header、footer、sidebar和content四个区域进行页面布局。在页面相应的各表格代码中,分别使用形如
3.2 表单数据验证
NCRE的报名对考生报名信息各字段有着明确的要求。如:姓名、身份证号、性别、出生时期、报考语言级别等字段不能为空,且各信息之间在逻辑上要一致,如出生日期字段要与身份证号中的日期相一致。Struts提供了完善的表单数据验证功能。当用户提交了HTML表单,Struts框架将自动把表单数据组装到ActionForm Bean中,ActionForm Bean中的属性和HTML表单中的字段一一对应,然后运行ActionForm Bean中的数据验证方法validate()。以下示例代码为报名注册页面中用于验证姓名字段是否为空以及是否含有半角或全角空格。
public ActionErrors validate(ActionMapping mapping,
HttpServletRequest request){
ActionErrors errors=new ActionErrors();
if (this.name==null||"".equals(this.name))
errors.add("name",new ActionMessage("name.null") );
if (this.name.indexOf(" ")!=-1 || this.xm.indexOf(" ")!=-1 ){
errors.add("name.space",new ActionMessage("name.space") );
return errors; }
本系统在设计时对各表单信息的验证进行了周全的考虑,使信息在进入业务逻辑层之前就得以验证,保证了存入数据库中数据的正确性,让系统运行得更加稳健。
3.3 业务处理
业务流程方面。NCRE网上报名系统业务流程设计的合理与否直接影响报名工作的效率。为此,在系统业务的流程进行了以下设计:一、考生先在网上预报名,得到一个注册号;二、考生到缴费点进行交费,取得一个收据号(收据单);三、考生到信息确认点进行缴费与信息确认,取得一个报名号(报名回执单),至此报名成功。
业务数据安全方面。为了保证数据的安全,系统采用了对用户可指定角色权限的设计。如:照片处理角色可进行照片的上传与管理,信息确认角色可进行信息的确认,查询角色只能进行信息的查询。以上设计可让工作人员做到权责明晰。此外,系统还可以指定IP,只有指定IP地址的机器才能进行信息确认工作。这些设计大大增强了系统关键数据的安全性和有效性。
本系统中,表单数据经过验证后进入业务逻辑处理层进行处理。尽管JSP页面中可以嵌入Java代码进行业务逻辑的处理,但这样会系统结构凌乱。系统中所有的业务逻辑处量均通过Action进入。对于简单的业务逻辑,其处理代码直接写在Action类的execute()方法中;复杂的业务逻辑则写在独立的JavaBean中,需要时在execute()方法中进行实例化调用。
3.4 开发平台与运行效果展示
开发平台:JDK 6 ,集成开发环境:MyEclipse 5.1,Java Web服务器:Apache Tomcat 5。系统运行效果截图见图4。
5 结束语
全国计算等级考试原有报名系统模块存在报名效率低下的问题,所以本文提出了解决问题的方案:开发并运用基于B/S模式的网上报名系统。该文所展示的基于Struts的NCRE网上报名系统,已经多次应用到考点的报名工作中,该系统使用后,较以前的工作方式效率得到了极大的提高,系统运行稳健。所以,在此探讨Struts的工作机理、阐述NCRE网上报名系统的设计及其部分实现,以期给全国计算机等级考试的工作者们一些参考。
参考文献:
[1] 王竞,赵强,耿伟.Struts Tiles在NCRE网上报名系统中的应用[J].中国新技术新产品,2010,16( 44).
[2] 孙卫琴.精通Struts:基于MVC的Java Web设计与开发[M].北京:电子工业出版社,2006.
[3] 耿伟,吴蕾,王竞.全国计算机等级考试网上报名系统的设计[J].电脑知识与技术,2010(15): 4193-4194.
[4] 崔鹏飞,姜利群.基于异构数据源的网络等级考试报名管理系统设计及实现[J].中国教育技术装备,2008(12):75-76.
[5] James Holmes.Struts程序员查询词典[M].北京:中国铁道出版社,2005.