《基于MVC的食品安全监控系统的研究与设计.pdf》由会员分享,可在线阅读,更多相关《基于MVC的食品安全监控系统的研究与设计.pdf(4页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、 1994-2009 China Academic Journal Electronic Publishing House.All rights reserved.http:/ 收稿日期:2007207204;修回日期:2007209218 基金项目:中国下一代互联网示范工程(CNGI)移动奥运资助项目(CNGI20421722A)作者简介:陈良臣(19822),男,研究实习员,硕士,主要研究方向为嵌入式与网络安全(chenlc );孙功星(19632),男,研究员,博导,博士,主要研究方向为网格计算、人工神经网络理论等;赵锐(19762),男,工程师,硕士,主要研究方向为网络与信息安全;闫晓
2、飞(19762),男,研究实习员,硕士,主要研究方向为网络与信息安全;吴焕(19822),男,博士研究生,主要研究方向为网络安全.基于MVC的食品安全监控系统的研究与设计3陈良臣1,孙功星1,赵 锐2,闫晓飞1,吴 焕1(1.中国科学院 高能物理研究所 计算中心,北京100049;2.华北电力大学 计算机科学与技术学院,北京102206)摘 要:研究了MVC的设计思想、设计方法、扩展以及Struts和Spring等主要框架,结合食品卫生安全实际业务流程以及Struts框架和Spring框架的整合技术,最后设计了一种基于MVC设计模式的食品安全监控系统,保证了系统的高效,结构清晰,可扩展性和可维
3、护性。关键词:模型 视图 挖制器模式;食品安全监控系统;Struts框架;Spring框架中图分类号:TP391 文献标志码:A 文章编号:100123695(2008)0722091203Research and design of food secure monitor system based onMVCCHEN Liang2chen1,SUN Gong2xing1,ZHAO Rui2,YAN Xiao2fei1,WU Huan1(1.Computing Center,Institute of High Energy Physics,ChineseAcademy of Sciences,
4、Beijing100049,China;2.School of ComputerScience&Technology,North China Electric PowerUniversity,Beijing102206,China)Abstract:This paper studied theMVC design thinking andmethods,expansion,Struts framework and the Spring framework,with the actual business processed of food secure minitor system and t
5、he integration technology of Spring framework and Strutsframework,and then presented a design of the food secure monitor system based on theMVC design pattern,and ensured thesystems efficiency,a clear structure,extensibility and maintainability.Key words:MVC(model/view/controller)pattern;food secure
6、 monitor system;Struts framework;Spring framework 食品是人类赖以生存的物质基础,食品安全关系到人类健康、社会稳定和经济发展。食品安全是一个世界性的问题,其重要性不言而喻,而我国的食品安全的信息化现代化程度却普遍落后,至今有关部门还处于手工操作阶段,即使具有初步信息化手段的部门大多也采用传统的C/S层次结构。食品安全由于其行业的特殊性,除了C/S模式固有的弊端之外,还存在如服务器数目过多、维护困难、实时性不高等问题。随着加入WTO后,企业之间竞争越来越激烈,食品安全的信息化改造也迫在眉睫。基于上述情况,北京市工商局立项为首都食品卫生安全监控信息化
7、平台的课题开发,通过先进的信息管理平台构建,提升北京市食品安全的管理层次和信息化水平。为了使食品安全监控系统结构清晰,具有极其良好的可扩展性和可维护性,系统采用基于MVC设计模式。MVC模式是一个复杂的架构模式,其实现也显得非常复杂,但是,多种设计模式结合在一起,使MVC模式的实现变得相对简单易行,所以它也是国外用得很多的一种设计模式。MVC模式是一个很好创建软件的途径,它所提倡的一些原则,像内容和显示互相分离可能比较好理解,最重要的是应该有多个视图对应一个模型的能力。设计模式1 设计思想MVC模式,即把一个应用的输入、处理、输出流程按照model、view、controller的方式进行分离
8、,这样一个应用被分为模型层、视图层、控制层三层。模型、视图与控制器的分离,使得一个模型可以具有多个显示视图。如果用户通过某个视图的控制器改变了模型的数据,所有其他依赖于这些数据的视图都应反映这些变化。因此,无论何时发生了何种数据变化,控制器都会将变化通知所有的视图,导致显示的更新。这实际上是一种模型的变化 传播机制。模型、视图、控制器三者之间的关系和各自的主要功能如图1所示。1 设计方法MVC模式将目标系统分为模型、视图和控制器,并要定义描述三个部分之间通信的受限连接集合。相应地,MVC模式的设计包括四个部分:a)MVC通信设计。在MVC模式中,模型、视图和控制器这三个部分之间的通信是通过定义
9、一个受限连接的集合来描第25卷第7期2008年7月 计 算 机 应 用 研 究Application Research of ComputersVol.25 No.7Jul.2008 1994-2009 China Academic Journal Electronic Publishing House.All rights reserved.http:/述的。如图l所示,可以采用带箭头连线对在各个部分之间进行的信息和控制传递作出形象的表示,并具体描述每个带箭头连线的含义。在实现上,模型、视图和控制器这三个部分之间的通信是通过相应的模型对象、视图对象和控制器对象之间的消息通信完成的。原则上应该
10、尽量减少三个部分之间的结合,增强隔离性,使模型部分可以不必了解数据表示和与用户交互的细节就可以完成数据处理,使视图不必了解模型进行数据处理的内部实现就可以完成数据表示的功能。这个受限连接的集合可以表示为(Pl,P2),D,(M,),t。其中:(P1,P2)表示从P1部分到P2部分的通信,P1,P2代表模型、视图或控制器;D是对从P1P2方向的通信的详细描述;(M,)表示一个有限方法集合,M是实现数据或控制传递的方法;(P1,P2),D,(M,)三元组完整地描述了从一个部分到另一部分之间的通信。b)模型的设计。模型是进行数据处理的地方,表达了实际应用中的业务处理逻辑。模型由许多模型对象及这些对象
11、之间的各种各样的关系构成。模型对象是根据问题域中的对象构建的,带有一些有意义的属性和方法,它们之间有这样或那样的关系,如一般特殊关系、整体部分关系、实例关联、消息关联等,它们互相交互完成数据处理功能。c)视图的设计。视图是表达数据显示逻辑的地方,通常完成或辅助完成GU I功能。视图对象通常用于保存一些从模型对象中得到的信息,但视图对象并不完全与模型对象相同。模型中有的对象在视图中可能没有,与模型对象对应的视图对象一般也具有与之不同的属性和方法;反之亦然。主要有两种方式实现视图对象:(a)视图对象是模型对象的一个代表,持有对相应模型对象的一个引用,相应的,在视图对象的方法中通过该引用将调用均传递
12、到模型对象中去。(b)视图对象不必实现与模型对象相同的接口方法,它拥有的是一些属性,反映了满足显示需要的数据,并可以从模型对象中获取相应的值。d)控制器的设计。控制器在用户与视图之间交互,完成接收用户输入并控制显示流程转换的功能,它充当了模型与视图之间的去耦层。控制器中的对象用于控制对用户输入的响应方式,是根据对响应方式和响应流程的定义而获得的对象。根据不同的MVC通信设计,控制器对象可以与模型对象、视图对象进行不同形式的通信。针对不同的情况,控制器对象通常有两种实现方法:(a)采用的设计开发环境提供了对控制器的支持,对控制器对象的实现形式以及它与模型对象和视图对象的交互方法提供了专门的支持。
13、(b)控制器作为模型与视图之间的一个去耦层实现,表现为一些普通对象,但完成去耦功能。1 的扩展通过在ASP.NET中的MVC模式编写,具有极其良好的可扩展性。它可以轻松实现以下功能:实现一个模型的多个视图;采用多个控制器;当模型改变时,所有视图将自动刷新;所有控制器将相互独立工作。这就是MVC模式的好处,只需在以前的程序上稍作修改或增加新的类,即可轻松增加许多程序功能。以前开发的许多类可以重用,而程序结构根本无须改变,各类之间相互独立,便于团体开发,提高开发效率。下面讨论如何实现一个模型、两个视图和一个控制器的程序。其中模型类及视图类根本无须改变,与前面的完全一样,这就是面向对象编程的好处。对
14、于控制器中的类,只需要增加另一个视图,并与模型发生关联即可。该模式下视图、控制器、模型三者之间的示意图如图2所示。主要框架MVC是应用很多的一种设计模式,多种设计模式结合在一起,使MVC模式的实现变得相对简单易行。包括多种MVC框架:NStruts、Maverick.NET、MaverickLite、IngeniousMVC、Web2sharp、Struts、Webwork、Spring等。其中Struts和Spring是最具有代表性的两种框架。1 框架Struts是一个基于J2EE平台的MVC框架,主要是采用Servlet和JSP技术来实现的。目标是利用Java技术开发基于MVC模式的Web
15、应用提供一个标准模式,能充分满足应用开发的需求,简单移用,敏捷迅速。Struts应用框架继承了MVC的各项特性,并根据J2EE的特点,作了相应的变化和扩展。Struts如何实现MVC的设计模式,将三个方面结合在一起。其体系结构如图3所示。在Struts框架中包含很多组件,如Action Servlet、Action、RequestProcessor、Action Mapping、Action Forward、ActionFor m。这些组件是Struts应用框架实现的关键。表1列出了Struts的核心类。1 框架Spring Framework是由Rod Johnson创立的一个开放源码的应用
16、框架。它是轻量级的J2EE应用程序框架,旨在简化J2EE的开发,降低J2EE项目实施的难度。Spring Framework的贡献包括两个部分,首先是为J2EE应用提供了一个优雅的基础结构;另外它还提供了许多旨在帮助开发人员更好地使用J2EE相关技术的工具性支持。从结构上看,它分为七个模块,其体系结构如图4所示。基于的监控系统设计通过信息化的手段,将日常监管工作中形成的信息统一归集到系统中,方便查询和管理。通过日常监管、监控点信息反馈和视频监控等方式,采集食品安全信息,不仅可以掌握食品安全质量的总体形势,而且可以发现潜在的食品安全风险因素,有针对性地开展预防性监管。2902计 算 机 应 用
17、研 究第25卷 1994-2009 China Academic Journal Electronic Publishing House.All rights reserved.http:/1 监控点的选取流程监控点是对全市食品安全状况实行全面管理和监控的重要措施,通过监控点的合理选取要能够对全市的食品进行有效监控,能够基本反映全市食品安全状况,因此在监控点的设立方面需要体现出其代表性,即能够全面反映全市食品安全状况。监控点的选取功能设计主要可分为三个方面:a)用户选择监控点选取功能,系统查询临时监控点表中是否有记录。若有,则转是否增加待选监控点。b)用户输入监控点总数(C)。系统首先进行统计
18、:候选监控点总数(A)、每个地域候选监控点总数(B)。系统计算出每个地域的监控点总数=C(B/A)。(按照公式计算)对每个地域根据业态随机选取监控点,每种业态平均选取,并计算出每种业态占所有业态和所有级别的百分比,并保存在设置表中。其中对于具有分级信息的业态,才进行级别的平均选取,否则只以区域和业态为监控点选取条件。c)系统根据业态和级别的关系提供分级信息是否作为选取条件的选项。系统实现监控点选取程序流程如图5所示。1 与的整合在整个软件的设计中,主要以MVC的设计思想为主线,整个框架的工作流程以Struts框架为基础,表示层主要由Struts框架完成,提供完善的标记库,管理用户的请求并作出相
19、应的响应,提供一个控制器,调用相关的业务逻辑。而业务逻辑层和数据持久层则由Spring封装,Spring作为一个工具库,提供I OC支持、AOP支持、提供JDBC接口或其他映射等。这样从框架的整体来看,Struts将贯穿Web应用的设计,它担负页面请求的接收、请求数据的规格统一、逻辑分发以及处理结果的返回这些纵向流程。Spring则在其中提供横向的支持。Struts将请求分发到Action之后,由Spring接管,它负责封装这些Bean,为它们提供I OC支持和事务管理机制,处理完成的结果返回交到Struts的控制器来处理。在整个设计中,主要解决两个问题:(a)在Struts框架中如何加载Sp
20、ring的ApplicationContext,使Web容器在初始化时能够自动获得Spring设置的JavaBean对象;(b)Struts的控制器调用Action对象时,采取什么方法将Action对象纳入到Spring容器的管理范围,从而实现Struts与Spring的有效结合。以下主要讨论解决这两个问题的途径:a)加载Spring的ApplicationContext。为了在Web容器初始化时能够自动获得Spring设置的JavaBean对象,可以在Struts的配置文件Struts2config.xml加入一个插件Context Loa2derPlugIn。该插件是Spring框架为了集
21、成Struts实现的org.apache.struts.action.PlugIn接口的类,它在Struts应用启动时被初始化,在应用关闭时被销毁。b)封装Action实例。Spring在设计时就充分考虑到了与Struts的协同工作,通过内置的Struts Plug2in在两者之间提供了良好的结合点;同时提供了一个DelegatingActionProxy方法。该方法继承了Struts的Action类,实现了针对实际Action的调用代理,同时它作为Spring中的一个Bean,也可以享受到Spring提供的所有服务(依赖注入、实例管理、事务管理等)。当Struts加载对应的Action时,D
22、elegatingActionProxy就根据传入的path属性,在WebApplicationContext中寻找对应的Bean,并将其实例返回给Struts。根据Struts的工作流程,当建立一个ActionServlet实例后,Struts会执行它默认的Process()方法,而这个方法实际上是调用了RequestProcessor类的Process()方法,在RequestProcessor类的processActionCreate()方法就是创建一个Action实例,把它保存在Action缓冲中。也就是在配置文件注册的每一个ActionServlet实例都会由控制器将参数传递到Req
23、uestProcessor类的Process()方法。因此可以重新加载这个类。当实现RequestProcessor类时,调用修改后的process ActionCreateQ方法,把ActionServlet实例纳入Spring的容器管理。这样,当Struts加载某个Action时,DelegatingStruts根据传入的Actionmapping属性,在SpringContext中寻找对应的Bean,使它享受Spring提供的所有服务(实例管理、事务管理等),并将实例返回给Struts。结束语通过对食品安全监控系统的具体实现,利用MVC设计模式,将StrutsMVC以及Spring中的B
24、ean管理、事务管理融为一体,获得一个全面的、成熟的、高效的、自顶而下的Web开发框架。该框架大大缩短了开发周期,减少代码量,增强了系统的可维护性,同时利用系统分层的原理,在系统中引入数据持久层,通过数据持久层与数据库交互,这样使系统各个层次之间结构分明,各层之间的依赖性减少,有利于程序的可重用性。MVC模式是一个复杂的架构模式,其实现也显得非常复杂,但是,多种设计模式结合在一起,使MVC模式的实现变得相对简单易行,所以需要总结出更多可靠的设计模式,使MVC模式运用更加方便有效。参考文献:1任中方,张华,闫明松,等.MVC模式研究的综述 J .计算机应用研究,2004,21(1):124.2陆
25、荣幸,郁洲.J2EE平台上MVC设计模式的研究与实现J .计算机应用研究,2003,20(3):1442146.3姚延涛,王煜,沈钧毅,等.采用增强的MVC模式提高面向对象应用能力J .小型微型计算机系统,2002,12(6):23225.4何成万,余秋惠.MVC模型2及Struts软件框架的研究J .计算机工程,2002,5(6):2742275.(下转第2103页)3902第7期陈良臣,等:基于MVC的食品安全监控系统的研究与设计 1994-2009 China Academic Journal Electronic Publishing House.All rights reserved
26、.http:/要使用第三种方式在页面中嵌入CSS文本,需要对CSS文本和页面文件分别进行解析,然后按照I D将CSS文本分散到页面文件中。这种做法没有前两种效率高,并且容易出错。完成了CSS的保存,则只要下次页面再次加载,这些CSS也会一起加载,用户进行的布局定制也就生效了。需要注意的是,使用上述的布局定制技术可能会产生一些问题。由于CSS是层叠的,越接近目标元素,CSS定义的优先级越高。如果生成的页面本身在元素声明处也使用了style属性内联,则保存在外部.css文件中的用户定制的style效果会被覆盖。在设计页面生成方法时必须小心,应当尽可能地避免使用style属性内联。图3显示了解决方案
27、的完整流程。其中的第a)步是对图2的概括。实际应用上述页面定制解决方案在实际应用中取得了良好的效果。下面以一个实际项目中的应用为例。测试管理工具(以下简称T M)的出发点是为了便于对软件测试过程进行管理和跟踪,其中涉及了软件开发过程中两个重要的概念,即需求与(测试)用例的管理功能。然而,不同的企业或机构对需求和用例的描述方式通常也不尽相同,如有的用户认为用例应该有一个优先级属性,并且它应该分为高、中、低三类来表示用例的重要程度。满足用户特定的行业约束是提升用户体验的重要一环12。为了满足不同用户的需要,T M提出了符合Web 2.0思想的定制功能,使用户能够按照自己的需要为需求和用例定义属性。
28、要实现上面需求,用户只需在T M中为用例添加一个优先级属性,并为它定义可选值(包括高、中、低)即可。由于需求和用例描述属性的不确定性,两者的基本信息页面是采用页面生成技术按照用户的配置产生的。然而,生成的页面在布局上比较单一,并不总能满足用户的需要。引入了前文中描述的布局定制技术,希望能改善用户体验。图4是预览页面的初始布局,对其中的“需求描述”属性对应的文本区域进行大小调整后,再对“RM需求编号”属性和“保存”按钮进行了位置调整。调整后的页面布局如图5所示。应用上述页面定制方案后,用户对需求和用例的基本信息页面有了极大的自定义空间,可以随心所欲地调整表单控件的位置和大小,用户体验得到改善,达
29、到了最初的构想。结束语对于Web 2.0时代的Web应用,定制能力正逐渐成为其设计过程中的重要考虑因素。用户对个性化的需求是多方面的,仅仅提供内容定制而忽视布局定制并不总能满足用户的需要。针对当前Web应用在页面布局定制上存在的局限,本文提出了将页面生成技术与基于CSS的布局定制技术相结合的解决方案,使用户在拥有内容定制能力的基础上,对页面的布局也获得了极大的自主权。在实际项目中应用该方案取得了良好的效果。同时,得益于CSS技术本身的特点,在已有页面生成技术基础上所要作的修改并不大,工作量主要体现在浏览器端脚本上。CSS与页面的分离增加了设计的灵活性,实现了解耦合。参考文献:1 KOLB IT
30、SCH J,MAURER H.The transformation of the Web:howemerging communities shape the information we consumeJ.Jour2nalofUniversalComputer Science,2006,12(2):1872213.2 W ikipedia.Web 2.0 EB/OL.2007205222.http:/en.wikipe2dia.org/wiki/Web_2.0.3L I N K J.BuildingWeb 2.0 J.Computer,2007,40(5):1012102.4翟大昆.动态Web
31、页的JSP技术分析J.云南大学学报:自然科学版,2001,23(2):1042107.5 WOOD L.Programming theWeb:the W3C DOM specification J.IEEE Internet Computing,1999,3(1):48254.6W ikipedia.Cascading style sheets EB/OL.2007205222.ht2tp:/en.wikipedia.org/wiki/Css.7FLANAGAN D.JavaScript权威指南M.张铭泽,等译.4版.北京:机械工业出版社,2003.8 MicrosoftMSDN.Curren
32、t style object EB/OL.2007205222.http:/ DOM level 2 version 1.0 Java API:interface ViewCSS EB/OL.2007205222.http:/www.w3.org/2003/01/dom22javadoc/org/w3c/dom/css/ViewCSS.html.10 吕林涛,万经华,周红芳.基于Ajax的Web无刷新页面快速更新数据方法J.计算机应用研究,2006,23(11):1992200,223.11 HT ML.NET.CSS的工作原理 EB/OL.2007205222.http:/ M I LLER
33、 J.The user experience J.IEEE Internet Computing,2005,9(5):90292.(上接第2093页)5透明.Model2view2controller模式J.程序员,2002,10(3):55256.6孙卫琴,李洪成.精通Struts:基于MVC的Java Web设计与开发M .北京:电子工业出版社,2004:2532324.7刘晓华,陈亚强.J2EE应用开发详解M.北京:电子工业出版社,2004:2042315.8SHALLOWAYA,JAMES R T.设计模式解析M .徐言声,译.北京:人民邮电出版社,2006:2452356.9DEACON J.Model2view2controller(MVC)architeture EB/OL.(2000208)2005204.http:/www.jd1.co.uk/ridfings/MVC.pdf.10 JAAKSIA.MVC+application architecture EB/OL.(2003).ht2tp:/www.cs.uta.fi/jyrki/ohtdy/mvc/ppt.3012第7期罗 威,等:基于模板和CSS技术的Web页面定制