外文翻译Spring的webMVC构架模式.docx
- 文档编号:5379504
- 上传时间:2023-05-08
- 格式:DOCX
- 页数:17
- 大小:40.87KB
外文翻译Spring的webMVC构架模式.docx
《外文翻译Spring的webMVC构架模式.docx》由会员分享,可在线阅读,更多相关《外文翻译Spring的webMVC构架模式.docx(17页珍藏版)》请在冰点文库上搜索。
外文翻译Spring的webMVC构架模式
翻译文稿1、
Spring的webMVC 构架模式
JuergenHoeller
1。
介绍:
Spring应用构架
当你第一次看到Spring的时候,你一定会说:
"哦不,又一种web 构架”.这篇文章将告诉你Spring明显区别于其他轻量级applicationframework,它将专注于web的支持,与struts 和 webwork有着明显的区别。
在和struts和webwork的对比上,Spring是一个服务于所有层面的applicationframework:
提供了bean的配置基础,AOP的支持,JDBC的提取框架,抽象事务支持,等等。
它有一个非常显著的特点:
在某个层面上如果你不需要Spring的支持,你就可以不使用String的class,只使用它的某一部分的功能。
从它的设计理念,你可以看到String帮助你实现了真正的逻辑层和web层的分离:
例如.一个校验应用将不用依靠controllers,就可以实现.这样的目标是更好的重用和易测:
过分依靠不必要的容器和框架将不能实现这一点。
当然,Spring的自己的web支持和通常框架模式的细致完整。
然而,Spring替换struts,webwork或者其他的web方案非常的容易。
对于Spring的web支持或者不同的地方,Spring 允许你在web容器里面建立一个中间层,在测试环境或者标准独立的应用里面来设置重用你的商务逻辑.还有在J2EE环境里面,你的商务逻辑不必依靠容器提供的服务,像JTA,EJB的支持.良好的构架的web应用可以运行在任何容器上,如,Tomcat或者Resin.值得注意的是,Spring不是和已经存在的解决方案进行竞争。
我们鼓励结合标准的技术,如, Servlet,JSP,JTA,JNDI,JDBC,and JDO,和非常匹配的工具,如,Hibernate,Velocity,Log4J,andCaucho’sHessian/Burlap。
这个框架的的设计思想是在你的应用需要改良的时候,你将会做一些技术的选择:
例如,如果你需要分布式事务处理,你可能需要用Spring的JtaTransactionManager来实现JTA服务.或者,用DataSourceTransactionManagerorHibernateTransactionManager来实现美妙完美的单个数据库交换。
2.Web MVC:
Springweb框架的设计思想
Spring框架通过配置操作mappings,展示resolution,本地化和模版集成围绕着分派请求操作的servlet—DispatcherServlet设计的.缺省的操作是一个非常简单的控制接口, 他只提供了ModelAndViewhandleRequest(request,response)方法.这将用于一个应用的控制,但是,如果你想包含多个层次的控制,AbstractController,AbstractCommandController,MultiActionController,SimpleFormController,AbstractWizardFormController 将帮助你完成。
应用控制将代表那些子系统。
注意,你可以选择一个适当的基类:
如果你没有 webform,你就不必用FormController。
这就是和Struts最大的不同。
你可以通过命令或者form对象来操作任何对象:
这不需要接口工具或者一个基础类的驱动.Spring的数据邦定是非常的灵活的.举例来说,它描述了具有在应用范围内的校验错误的输入机制,但不是系统错误.所以在你的form对象里面你不必复制你的业务对象的string属性,只操作出错的子任务,或者适当地转换string。
换句话说,它通常可以很好的直接邦定你的业务对象。
这也是和struts围绕请求基础类Action 和ActionForm(每个action操作类型) 建立主要的不同之一。
对比WebWork,Sping更多的区别在于对象角色:
Sping支持控制器的感念,一个操作命令或者form对象,和得到数据传递给视图的模式.这个模式通常包含命令和form对象,但有时也包含任意的参考数据。
换句话说,一个WebWorkAction联合所有这些角色到一个单独的对象.WebWork 允许你用已经存在的业务对象作为你 form 的一部分,但是只生成各自Action 的bean属性. 最后,操作请求的Action实例在一个视图里面获得付值和formpopulation。
然而,参考数据也需要作为Action的属性被模拟。
一个类里面有太多的角色是值得讨论的. 关于视图:
Spring的视图方案非常的灵活。
一个控制器执行可以通过response 返回ModelAndView对象null,就可以直接写到一个视图。
在通常的状况下,一个ModelAndView实例结合了一个view和一个 model Map,包含了bean name 和通讯对象(像命令或者form,参考数据等等)。
View名称是非常高端的的配置,不是通过bean name,一个properties 文件就是通过你自己的ViewResolver.这个抽象的modelMap允许你在视图层面完成提取,没有任何的争辩JSP/Velocity或者其他,每一种都可以直接完整使用。
这个modelMap还可以简单得得到适当的格式化数据的转换,像JSP请求属性或者Velocity模版模式.
3.集成:
用Spring一个不同web框架
许多开发团队将为他们已有的项目或者新的项目已经获得的期限和工具进行投资.这里没有像Struts那样大量的图书和工具,但是同样我们有大量的拥有Spring开发技巧的开发人员。
然而,如果你愿意生活在Struts的构架瑕疵中的话,他将是你在web层开发不错的选择.当然,其他应用也是一样。
如果你不想用Spring的 webMVC,但是想借用Spring嫁接其他的解决方案,你可以非常简单地通过Spring继承你自己的web 框架。
你可以非常简单地通过ContextLoaderListener启动一个Springrootapplicationcontext,并且,通过Struts或者WebWork的action利用ServletContext属性(或者Spring的helper方法)存取它。
值得注意的是,这里没有任何的 ”plugins"被调用,因此没有专门的集成:
来自web层的视图, 你可以简单的将Spring作为一个管理applicationcontext实例入口点的类库。
所有你注册bean和Spring服务都可以在不需要Spring的webMVC的情况下都可以被你轻松掌握.Spring不是和Struts,WebWork这些应用进行竞争,它将作为一个纯web框架应用于很多领域,因为它不需要配置数据存储和事务操作.所以,你可以利用Spring提供的中间层和数据存储层来丰富你的应用,甚至,你想用JDBC或者Hibernate进行事务抽象。
4。
特点核对列表
如果聚焦于web 支持,Spring的一些显著特点是:
清楚地角色分离:
controller,validator,commandobject , formobject ,modelobject,和DispatcherServlet,handlermappingvs viewresolver,等等 强大而且直接的框架和作为JavaBeans的应用配置,包括简单的参照和应用内容,例如,从web控制器到业务对象和数据校验.适应性,外挂:
无论什么样的控制器你都需要得到代替Action/ActionForm所做的每件事情的方案(简单,命令,form,范例,多重action,或者定制一个) 重用业务逻辑代码,不需要复制:
你可以用已经有的业务逻辑对象作为命令或则form对象代替反射特定的ActionForm子类。
可订制的邦定和数据校验:
作为应用级的输入机制的错误校验,固定日期和数字邦定,例如,通过手动检查和转换业务对象来替换单个的string。
可订制的操作,可订制的视图方案:
通过name/valueMap灵活的模型传送,用一个简单的方法从简单到复杂操作映射和视图方案策略。
本地定制和主题方案:
Spring没有taglib,完全支持于JSPs,JSTL,不需要额外的连接就可以支持Velocity,等等. 简单但是强大的taglibrary避免了HTML产生的混乱,最大限度的灵活扩展了标记代码.
翻译文稿2、
一种基于Hibernate和Struts的J2EE应用开发策略
本文分析了Hibernate和Struts的机制,提出了一种基于Hibernate和Struts的J2EE应用开发策略。
在这种策略中,模型层用Hibernate实现,视图和控制器则用Struts框架实现。
这样可大大降低代码的耦合性以及提高系统的开发效率。
关键字 Hibernate,Struts,MVC,持久层
1引言
随着Java技术的逐渐成熟与完善,作为建立企业级应用的标准平台,J2EE平台得到了长足的发展。
借助于J2EE规范中包含的多项技术:
Enterprise JavaBean(EJB)、JavaServlets(Servlet)、JavaServerPages(JSP)、Java MessageService(JMS)等,开发出了许多应用系统。
但是,在传统J2EE应用的开发过程中也出现了一些问题:
1)数据模型和逻辑模型之间的矛盾。
目前使用的数据库基本上都是关系型数据库,而Java本质上是一种面向对象的语言,对象在存储和读取时使用SQL和JDBC进行数据库操作,降低了编程的效率以及系统的可维护性;
2)传统的J2EE应用多采用基于EJB的重量级框架,这种框架适合于开发大型企业应用,但是使用EJB容器进行开发和调试需要耗费大量时间。
为了降低代码的耦合性,提高系统的开发效率,本文提出了一种基于Struts框架和Hibernate框架的J2EE应用开发策略.
2 数据持久层及HibernateHibernate是一个数据持久层框架,是一种实现对象和关系之间映射(O/R Mapping)的工具,它对JDBC进行了轻量级的对象封装,使程序员可以使用对象编程思想来操作数据库。
它不仅提供了从Java类到数据表的映射,也提供了数据查询和恢复机制。
相对于使用JDBC和SQL来操作数据库,使用Hibernate能大大的提高实现的效率.Hibernate框架用配置文件的形式来定义Java对象和数据表之间的映射关系,同时在更深的层面将数据表之间的关系解释为Java对象之间的继承及包含等关系。
通过使用HQL语句将复杂的关系算法用对象的方式描述,在很大程度上简化了对数据的查询,加快了开发的效率。
在Hibernate中有一个简单而直观的API,用于对数据库所表示的对象执行查询.要创建或修改这些对象,只需在程序中与它们进行交互,然后告诉Hibernate保存即可。
这样,大量封装持久化操作的业务逻辑不再需要编写烦琐的JDBC语句,从而使数据持久层得到了极大的简化。
3用Struts实现MVC架构 MVC(Model—View—Controller)由Trygve Reenskaug提出,首先被应用在SmallTalk—80环境中,是许多交互和界面系统的构成基础.根据界面设计可变性的需求,MVC把交互系统的组成分解成模型、视图、控制器三部分.模型(Model)是软件所处理问题逻辑在独立于外在显示内容和形式情况下的内在抽象,封装了问题的核心数据、逻辑和功能的计算关系,独立于具体的界面表达和I/O操作。
视图(View)把表示模型数据及逻辑关系和状态的信息及特定形式展示给用户.它从模型获得显示信息,对于相同的信息可以有多个不同的显示形式或视图.控制器(Controller)是处理用户与软件的交互操作的,其职责是控制提供模型中任何变化的传播,确保用户界面于模型间的对应联系;它接受用户的输入,将输入反馈给模型,进而实现对模型的计算控制,是使模型和视图协调工作的部件。
通常一个视图对应一个控制器。
模型、视图与控制器的分离,使得一个模型可以具有多个显示视图。
如果用户通过某个视图的控制器改变了模型的数据,所有其它依赖于这些数据的视图都应反映到这些变化。
因此,无论何时发生了何种数据变化,控制器都会将变化通知所有的视图,导致显示的更新。
这实际上是一种模型的变化—传播机制。
Struts框架最早是作为ApacheJakarta项目的组成部分问世运做,它继承了MVC的各项特性,并根据J2EE的特点,做了相应的变化与扩展.Struts框架很好的结合了Jsp,JavaServlet,JavaBean,Taglib等技术。
在Struts中,承担MVC中控制器角色的是ActionServlet。
ActionServlet是一个通用的控制组件。
这个控制组件提供了处理所有发送到Struts的HTTP请求的入口点。
它截取和分发这些请求到相应的动作类(这些动作类都是Action类的子类).另外控制组件也负责用相应的请求参数填充Action Form(FromBean),并传给动作类(ActionBean)。
动作类访问核心商业逻辑,即访问JavaBean或调用EJB.最后动作类把控制权传给后续的JSP文件,由JSP文件生成视图。
所有这些控制逻辑利用Struts-config。
xml文件来配置.在Struts框架中,视图主要由JSP生成页面完成,Struts提供丰富的JSP标签库,这有利于分开表现逻辑和程序逻辑。
模型以一个或多个JavaBean的形式存在。
在Struts中,主要存在三种Bean,分别是:
Action,ActionForm,EJB或者Java Bean。
Struts框架没有具体定义模型层的实现,在实际开发中,模型层通常是和业务逻辑紧密相连的,并且要对底层数据进行操作。
下面介绍一种开发策略,将Hibernate引入到Struts框架的模型层中,使用它来进行数据封装和映射,提供持久化的支持。
4 运用Hibernate和Struts开发J2EE应用
以在J2EE应用中非常普遍的用户登录过程为例,来说明上述体系结构是如何具体运用的.登录的流程非常清晰:
用户从登录页面login.jsp输入登录信息,系统对登录信息进行验证,如果正确则成功登录,否则提示相应错误信息。
在开发过程中,使用Eclipse做为开发环境,同时加载了对Struts及Hibernate提供更好的控制和支持的第三方插件MyEclipse,Web服务器使用Tomcat,数据库选用了Mysql。
首先对Hibernate进行配置,只需要对系统自动生成的hibernate。
cfg.xml进行修改,配置好数据库连接的各种参数以及定义数据映射文件。
由于Hibernate所带的连接池主要用于测试,性能不是很好,可以通过JNDI将其修改为使用Tomcat的连接池.
ﻬ原文1(复印稿)
Web MVCwiththeSpringFramework
Juergen Hoeller
1。
Introduction:
Springthe ApplicationFramework
Whenfirst confrontedwiththeSpringFramework,onemightbetemptedtothink:
”Ohno, notyetanotherwebframework”.Thisarticlewill outlinewhySpringisn't particularlyawebframework but agenericlightweightapplication frameworkwithdedicatedwebsupport,and showthearchitecturaldifferences toStruts andWebWork
IncontrasttoStrutsorWebWork,Spring isanapplicationframeworkforalllayers:
Itoffersabeanconfigurationfoundation, AOP support,a JDBC abstractionframework,abstracttransactionsupport,etc。
It is averynon—intrusiveeffort:
Yourapplication classes donot need todependonanySpringclassesif notnecessary, and you canreuseevery partonitsownif youliketo.Fromitsvery design,theframeworkencourages cleanseparationof tiers,most importantlyweb tierandbusinesslogic:
e.g。
thevalidationframework doesnot dependonwebcontrollers。
Majorgoalsarereusabilityandtestability:
Unnecessarycontainer orframeworkdependenciescanbe consideredavoidableevils。
Ofcourse, Spring's ownwebsupportisnicelyintegratedwiththeframework’sgeneralpatterns. Nevertheless,replacing thewebsolution withStruts, WebWork, orthelikeiseasy.BothwithSpring’s websupport oradifferentone, Springallowsfor buildingatruededicatedmiddletierin thewebcontainer,withtheoptiontoreuseexactlythesamebusinesslogicintestenvironmentsor standaloneapplications。
And withinJ2EE,yourbusinesslogic willnot unnecessarilydependoncontainerserviceslikeJTA orEJB—allowing complex, well-architectedwebapplications torunina "simple"containerlikeTomcat orResin。
Notethat Springdoesn'tgenerallyaimtocompetewithexisting solutions. Itratherfostersseamless integration withstandardslikeServlet, JSP,JTA,JNDI,JDBC,and JDO, and well—suited tools like Hibernate,Velocity, Log4J,and Caucho'sHessian/Burlap。
The frameworkis designed togrow withtheneedsofyourapplications,intermsof technologychoice:
Forexample,youwillprobablyuseJTA via Spring's JtaTransactionManagerif youneeddistributedtransactions —butonlythen, asthere areperfectreplacementsforsingledatabases,likeDataSourceTransactionManageror HibernateTransactionManager.
2。
WebMVC:
TheDesign ofSpring’sWebFramework
Spring’s webframeworkisdesignedarounda DispatcherServletthatdispatchesrequeststohandlers,withconfigurablehandlermappings,viewresolution,andlocaleandtheme resolution。
The defaulthandleris averysimpleControllerinterface, justofferinga”ModelAndViewhandleRequest(request,response)”method.This canalreadybeused for applicationcontrollers,butyou will prefertheincludedimplementationhierarchy,consistingofAbstractController,AbstractCommandController,MultiActionController,SimpleFormController,AbstractWizardFormController. Applicationcontrollerswilltypically besubclasses of those.Notethatyou canchoose anappropriatebaseclass:
Ifyoudon’t haveaform, you don't needaFormController。
Thisisamajordifference toStruts。
You cantakeanyobject as commandorform object:
There’s noneedto implementaninterfaceorderivefroma baseclass。
Spring's data bindingishighlyflexible, e.g.ittreatstypemismatches asvalidationerrors thatcanbeevaluatedbytheapplication,notassystem errors.Soyoudon'tneedto duplicate yourbusinessobjects'properties asStringsinyourformobjects,justtobe
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 外文 翻译 Spring webMVC 构架 模式