维普资讯 http://www.cqvip.com 第l6卷.第1 期 计算机技术与发展 I.2006年l2月 16 N。.12 (X)MPUTER TECHNOLOGY AND DEVEIA)PMENT Dec. 2006 MVC在J2EE框架中的应用研究 隋永,周家纪 (成都理工大学信息工程学院,四川成都610059) 摘要:基于B/S的软件开发需要一种科学的软件开发模式,MVC模式的设计思想为软件的健壮性、可维护性和可扩展性 提供了有力的支持。文中将探讨J2EE框架与MVC模式相结合的开发方式,并通过介绍基于J2EE与MVC模式所开发的 企业管理系统来说明该模式的优点。 关键词:J2EE框架;MVC设计模式;业务逻辑;数据访问对象 中豳分类号:TP311.5 文献标识码:A 文章编号:1673—629X(2006)12—0119一O3 Application Study of MVC in Frame of J2EE SUI Yong,ZHOU Jia-ji (School of Information Engin ̄xing,Chengdu University of Technology,Chengdu 610059,China) Abstract:Software development based on B/S needs a scientific development mode1.The thinking of MVC rnake ̄a solid foundation for the osftware robust,malntensnees,and extension.Discuss the ̄mbination of J2EE frame and MVC,and illustrate the advantage of this model byintorducingtheenterprise rrmnogement s ̄tem based on J2EEframe andMVC. Key s:J2EE;MVC;BO;DAO O引 言 发明的一种软件设计模式。MVC的基本思想是将应用数 随着Web技术的广泛应用,基于B/S的软件开发得 据和业务逻辑、数据的表示以及数据的交互相分离,即分 到快速的发展,SUN公司所提出的J2EE框架成为web 离为不同的实体,分别为模型(Mode1)、视图(View)和控 开发的一支重要力量,但基于B/S架构软件的健壮性、可 制 ̄(Controller)[ ,MVC模型如图1所示。 维护性和可扩展性成为必须解决的问题。MVC模式的提 出使这些问题迎刃而解。SUN公司在J2EE蓝图中建议 在设计应用时使用MVC(Model—View—Contorller,模型 一视图一控制器)设计模型。使用MVC的关键在于将逻 辑分离为3个不同的单元:Model,View and Contorller,之 所以分为这3个部分,主要是因为应用数据结构和逻辑 (模型)往往是应用的最稳定的部分,而数据的表示(视图) 图l r、,C模型图 的变化则可能相当频繁。如许多网站为跟上web设计的 模型(Mode1)是应用程序的主体部分,表示业务数据 最新形势经常改头换面。但所使用的数据(视图)却没有变 和业务逻辑,可由其它组件进行访问。视图(Viwe)是用 化。或者开发者可能希望用不同的语言来表示数据,以及 户看到并与之交互的界面,视图向用户显示相关的数据, 向内部和外部用户分别提供不同的数据子集等等。这些 并能接受用户的输入数据,但是它并不进行任何的业务处 ■ 开发的具体需要决定了MVC模型的结构。 理。控制器(Controller)接受用户的输入并调用模型和视 图去完成用户的需求。 1 MVC设计模式 ◆ MVC是Model—View~Controller的简称MVC模式的处理过程为首先控制器接收用户的请 ,最早是由 求,并决定调用模型进行处理;然后模型根据用户请求进 Xerox PARC在2O世纪8O年代为编程语言SnmlltNk一80 行相应的业务逻辑处理,并返回数据;最后控制器调用相 应的视图来格式化模型返回的数据,并通过视图呈现给用 收稿日期:2006—03~07 户。由此可以看出MvC的优点为:模型响应用户请求并 作者筒介:隋永(1981一),男。山东诸城人,硕士研究生,研究方向 返回响应数据;视图负责格式化数据并把它们呈现给用 为软件工程、数据库理论与技术;周家纪,教授,硕士生导师,研究方 户;业务逻辑和表示层分离,同一个模型可以被不同的视 向为数据库理论与技术、图形图像处理。 图重用,所以大大提高了代码的可重用性。模型层是单独 维普资讯 http://www.cqvip.com -l20- 计算机技术与发展 第l6卷 设计的,它和视图以及控制器层保持相对,由此系统 所使用的数据可在不同的数据库之间移植,从而保证系统 的可扩展性。 2 MVC模式在J2EE框架中的应用形式 SUN公司针对MVC模式先后制定了两种规范l2 J,称 为JSP Modell和JSP Model2.。Model1只在一定程度上实 现了MVC,视图、控制器和模型的分离并不完全。Model)' 真正地实现了MVC模型。它建议由JSP技术实现视图 的功能,用Servlet技术实现控制器的功能,用JavaBean或 EJB技术实现模型层。但在实际的开发中,由于所开发系 统的复杂程度不同,J2EE框架中的技术在MVC模式中 所承担的角色也不同。 主要应该分为以下3种形式。 2.1使用.『sP和JavaBe ̄ 这种开发模式适合一些比较小的系统(如图2所示)。 同时它也是一种很适于测试新思想和建立系统模型的方 法。使用通用组件以及一些特定于应用的bean和动作, 这往往是得到一个可见效果的最快途径。一旦有关思想 得到证明,而且开发者对问题有了更深的理解,就能够对 实际的最终应用体系架构做出决定。采用这种模式开发 系统的缺点在于系统将很难维护和扩展。 图2 JSP和Ja, ̄an开发的模型围 2.2使用JSP。Servlet和JavaBean 这种开发模式对于一般的系统要求都可以满足,通常 将Servlet作为应用的控制器,JSP页面作为视图,此时 Servlet相当于一个网关,它将请求分派至特定的处理组 件,为客户请求选择适当的JSP页面进行响应。 采用这种模式的MVC角色的分配如图3所示,用户 将请求发送至相当于控制器的Servlet,Servlet可以自行完 成所请示的动作,也可以将每个动作委托至相应的各个 Bean处理类,Bean用于表示模型。根据处理的结果,控制 器会选择适当的JSP页面来为用户生成响应(视图)。 图3 J , ̄rvlet和Java.[ ̄.an开发的模型图 2.3使用Servlet。JSP和EJB J2EE框架中,EJB是其最核心的技术_3 J。如今,基于 EJB的应用通常也被看作是终极目标,EJB所带来的是事 务管理和一个不依赖于客户类型的组件模型。通常当系 统需求大量的数据库写访问操作的应用,而且要由多种不 同类型的客户进行访问时可采用EJB开发。基于EJB的 应用更强化了模型、视图和控制器的分离,从而可以得到 易于扩展和维护的系统。EJB定义了3种不同的企业 Bean,分别为:会话Bean(Session Bean),主要负责系统业 务逻辑功能的实现,又分为有状态会话Bean和无状态会 话P ̄tn;实体Bean(Entity Bean),表示存储在数据库中或 某些其它持久性存储器中的数据,通常主要负责系统数据 访问功能的实现,又分为Bean管理的持久化(BMP)和容 器管理的持久化(CMP);消息驱动Bean,它与会话Bean 类似,只是需要Bean发送消息来调用它们。相应的角色 分配如图4所示。 io ̄ - ] 一 请 控制器层 J 图4 jsP, ̄rvtet和E.IB开发的模型图 3基于J2EE框架和MVC模式的公司管理系统 wleb技术的应用与现代化的管理方式推进了企业信 息平台的诞生,目前越来越多的企业重视规划自己的资 源,IT界将其称为ERP。企业信息化是指企业利用现代 信息技术,通过信息资源的深入开发和广泛利用,不断提 高生产、经营、管理、决策、服务的效率和水平,进而提高企 业经济效益和企业竞争力的过程。具体到一个企业,企业 信息化就是要实现企业生产过程的自动化、管理方式的网 络化、决策支持的智能化和商务运营的电子化。企业信息 化包涵3个方面的内容:一是产品设计和制造信息化;二 是企业管理信息化;三是提供企业信息化的信息技术装 备、产品和服务。 这个系统就是为企业管理信息化而开发的。它应用 了基于MVC的5层体系结构,分别为web层、控制器层、 业务逻辑层、数据访问层、数据实体层,其中业务逻辑层、 数据访问层和数据实体层为MVC模式中的模型部分 (Mode1)。图5显示了系统的总体结构。 下面就各个部分说明它们的功能和实现的主要技术。 3.1 W曲层 这部分即MVC模型中的视图(View)。系统为员工 登陆提供了统一JSP页面login,jsp,系统提供了多种用户 角色,员工可以根据自己的职位选择不同的角色登陆,据 维普资讯 http://www.cqvip.com 第l2期 隋永等:MVC在.12EE框架中的应用研究 <listener—class> ・121・ 此系统为不同的员工提供与其角色相对应的权限。本系 统采用了MD5算法对用户密码进行加密,并将用户的登 录信息放在Session对象中进行保存,简要代码如下: U8 ̄18'.userLogin(1oginName,Common.Instance().MD5Encrypt com.or8.jsp.servlets.ManagerListener//N听器的实现类 <listener—class> <listener> (1oginl ̄s));//,m户验证 se ̄ion.setAttribute(“loglnName”,logiraName); 8es. ̄.or1. ̄rAttribute(“login—time”,DateTime.1mtance().getCur. 3。3业务逻辑层(B0) 系统的所有业务逻辑都在这部分中完成 4 J。业务逻 辑的主要功能为: remTime(1));//保存用户相关属性 (1)接受Servlet所提交的请求,并根据编码的业务规 图5系统总体设计架构 用户身份得到验证后,即可进入系统的功能区,它由 另外的JSP页面组成,在这里用户可以使用系统提供的各 项功能。主要包括制定工作计划、发布公告、内部BBS、业 务资料的上传与下载以及提交工作建议等等。 3.2控制层 这部分主要由Servlet负责,它相当于一个网关,通过 在web.xml文件中对Servlet文件进行配置,系统即可根 据用户的请求信息自动地去调用相应的逻辑功能模块,并 把处理后的信息发送到JSP页面星现给用户。该系统采 用了Servlet 2.3规范引入的两个组件类型:过滤器(fiher) 和(1istener)。过滤器可以截取发送至某Servlet, JSP页面或静态页面的请求,这样就可以很容易的将某一 类的请求先提交给一个统一的Sexvlet进行处理。过滤器 的配置形式如下: <filter> <filter—name>Contorl</filter—name>//过滤器名 <filter—class> corn.ora.jsp.servlets.Control </filter—class>//过滤器的实现类 </filter> <filter—mapping> ● <filter—name>Control</filter—laRrne> <url—pattern>/login/*</url—pattern>//'/at滤器的匹 配形式 </filter—mapping> 可以使系统应用对某些事件做出反应。我们 在系统中为某些会话的激活(activation)和钝化(passiva tion)事件建立了。的配置形式如下: <ljsteFier> 则处理请求。 (2)使用数据访问层完成与数据库的交互任务。 这部分使用JavaBe ̄技术实现,是整个系统中最为 复杂的部分,需要大量的代码设计。但同时它也是最为重 要的部分,业务逻辑bean的代码质量将直接影响到系统 的性能和健壮性。该系统根据功能模块的不同将bean分 配到不同的包中,这样在最大程度上提高了代码的重用 性。 3.4数据访问层(DAO) 数据访问层负责的任务主要是数据的持久化。这里 所说的数据主要包括两个部分,一是一般的关系型数据, 另外一种是对象数据库。在关系型数据库中存储对象数 据存在阻抗不匹配(impedance mismatch)。这就要求使用 数据访问对象(DA0)设计方式,该系统采用了JNDI配置 数据库连接池,在server.xml文件中的部分配置代码如 下: <GlobalNamingResources> <Environment name“sirnpleValue”铆)e “java.1ang.Integer” value “30”/> <Resource auth=“C ̄3ntainer”description=“User database” nalTle=“UserDatabase”type=“org.apache.catalina.UserDatabase” pathname “eonf/tomcat一 .xml”factory “org.apache. catalina.users.MemoryUserDatabaseFactory”/> <Resource rlRtne=“jndi/oa”type=“javax.scl1.DataSource” p&s¥word ̄--…driverChssName “oom.microsoft.jdbc.sqlse er. SQLServerDriver”maxldle=“2”maxWait “5000”Ui ̄ITIRme “sa”url=“jdbe:microsoft:sqlserver:/Aocalhcst:1433;Database- Name=oa”maxActive “4”/> </GlobaINmningResources> 系统同时使用了Hibernate来进行相应的对象一关系 映射(ORM)。Hibernate是一个面向Java环境的对象/关 系数据库的映射工具,它提供了数据在询和获取数据的方 法,这样可以大幅度减少开发时人工使用SQL和JDBC 处理数据的时间。使用Hibernate最重要的是配置文件的 设置,即hibernate.properties文件和类的映射文件class. Name.hbm.xml。 3.5数据实体层 这部分即系统所使用的数据库,本系统采用 SQl ̄rver作为数据库,其中包含了所有类的对应表,并 根据在Hibernate的映射文件中所配置的信息,将表建立 (下转第236页) 维普资讯 http://www.cqvip.com ・236・ 表4实验结果 计算机技术与发展 参考文献: 第16卷 Al ̄riori算法 FP—Growth算法 生成的规则数 检测到的入侵事件 24 35 l9 46 [1j HAN JIAWEI,PlEI JL ,YIN YIWEN,et a1.Mining Fre— quent Patterns without Candidate Generatln[C]//In:Proc Conf On theⅣIa咐 el t of data(SIGMOD’00,Dallas,TX), New York,NY,USA:ACM Press,2000. 生成规则运寿亍时间(。) 6.03 4.6O [2]Agrawal R,Imielienski T,Swami A.Minig nAssociation Rule ̄ between Sets of Items in Large Dainties[C]//Pro ̄Con/On Managemelat of Dam.New York,NY,USA:ACMPrem, 1993:207—216. 毒 ● 从上表可以看出FP—Growth算法在生成规则少于 Aprlori算法的情况下检测出了更多的入侵事件,有效地 降低了规则的冗余度和系统的漏警率;同时生成规则所需 [3]王新宇,杜孝平,谢昆青.FP—Gmwxh算法的实现方法研 要的时间也比Apron算法要少。在处理实际入侵检测所 产生的海量数据库和各种各样的入侵事件时,FP— 究[J].计算机工程与应用,2004(9):174—176. Growth算法的速度优势将更加明显地体现出来。从总体 [4] 吕锋,陈华胜.关联算法的改进及其在审计数据挖掘中 上来看,FP—Growth算法的性能要优于Apron算法,能 的应用[J].武汉理工大学学报:信息与管理工程版,2004, 26(5):5—9. 够更好地为入侵检测系统服务。 [5] 赵艳铎,宋斌恒.基于逆向FP一树的频繁模式挖掘算法 [J].计算机应用,2005,25(6):1385—1387. 4结束语 [6]朱秋萍,毛平平,罗 俊.基于关联规则的入侵检测系统 文中研究了在入侵检测中应用FP—Growth算法。 [J].计算机工程与应用,2004(26):160—162. 详细讨论了FP—Gmv ̄h的实现方法,并对它进行了改 【7]Bonc F,Goethals B.FP—Bol ̄;the ART of Growing and ‘进,实验证明改进的FP—G.m叭h算法比传统的关联算法 Prun ̄Small FP—trees:Proe 8th Paciifc—asia Co ̄erenoe 在入侵检测中的应用效果更好。但是我们注意到FP— oi1Kaowlec ̄Discovery and lMraMining。PAKDD’04,Syd— Growth算法也没有检测出所有的入侵事件,因此进一步 hey,Australia[C].Hddelberg,Germany:Sp血ger—ve她, 提高检测的精确度成了今后工作中应重点研究的内容。 2004:155—160. .-+.-4- (上接第121页) 了彼此间的关联关系。 需太大的改变,从而保证了软件的可扩展性。 下面是系统的整个工作流程。假设用系统管理员的角 (3)业务逻辑层与其它层的分离,最大程度地提高了 色登陆 n.jsp,系统将请求提交给loginservlet,login— 代码的重用性。只要对公共的组件进行优化,系统的整体 servlet根据用户提交的信息调用业务逻辑层相关的bean, 性能即可得到明显的提高。 并进行相应的帐户和密码验证,若通过则由togirm ̄let转 通过实践证明,该系统在J2EE框架中采用了MVC 发到main.jSp。否则转发到login.jsp。验证成功后管理员 模式开发,极大地提高了系统的健壮性、可维护性和可扩 要添加人员,系统即调应addpemon bean,当管理员添加完 展性。从而为许多基于B俗的系统提供了参考。 信息提交后,系统将通过数据访问层在数据库的person表 中添加相应的人员信息。 参考文献: 【1]BergatenH.JSP设计[M].第3版.北京:中国电力出版社, 4结语 2004. 由上文可以看出,整个系统使用了MVC设计模 [2] 孙卫琴.精通Struts:基于MVC的javaWeb设计与开发 式I 。系统的主要优点是: [M].北京:电子工业出版社,2005. (1)在开发的过程中,只要定义好相应的接口规则,开 [3]Roman E.精通F_JB[M].第2版.北京:电子工业出版社, 发人员即可以专注于自己模块的开发,从而提高了系统的 20o2. [4]易可可,陈志刚.基于MVC模式的Web OA系统设计与研 开发效率。 究[J].计算机工程与应用,2005(4):112—115. (2)Web层与其它层相分离,可以根据当前的情况更 [5]杨开英,刘榭.MVC设计模式在J2EE平台上的研究与 新页面内容,增加系统需求的新功能,而其它的代码却无 实现[J].微机发展,2004,14(11):114—116. (上接第214页) 2003. 子工业出版社,2003. [4]汤华庚.TI54xxDSP与51单片机的接口技术[J].单片机与 [2]TMS320C54XDSPCPU andPefipherah[M].US:TexasIn- 嵌入式系统应用,2004(1):27—30. strumellts.1999. [5]谢劲励.TMS320VC54X接口技术应用研究[J].工业控制 [3]赵红怡.DSP技术与应用实例[M].北京:电子工业出版社, 计算机,2004,17(3):17—19.