中南大学CentralSouthUniversity
本科毕业设计
英文文献翻译
    题    目          
    学生姓名                            
学    号                    
指导教师                            
学    院                  
专业班级                
                二○一六 年 一 月 八 日
                  Spring 的 web MVC 构架模式
                    Juergen Hoeller
1、 介绍: Spring 的应用构架
当你第一次看到并接触Spring框架的时候,你一定会在心里想到;“哦哦,不不,这又是另一种Web构架”。这篇文章将会指出Spring框架不是什么特殊的web框架,而是一个通用的轻量级的应用程序框架,在专用网络支持下的应用程序框架。并且它会告诉你Spring框架明显区别于其他轻量级application framework,它将专注于web的支持,与struts和webwork有着明显的区别。
在和struts和webwork的对比上之中,Spring框架是一个服务于所有层面上的application framework:提供了bean的配置基础,AOP的支持,JDBC的提取框架,抽象事务支持,等等诸如此类。它有一个非常显著的特点:在某个层面上如果你不需要Spring的支持,它有一个非常显著的特点:在某个层面上如果你不需要Spring的支持,你就可以不使用Spring框架的class(类),只使用它的某一部分的功能。从它的设计理念,你可以看到Spring框架帮助你实现了真正的逻辑层和web层的成功分离:例如:一个校验应用将不用依靠controllers,就可以实现。这样的目标是更好的重用和易测:过分依靠不必要的容器和框架将不能实现这
一点。
当然,Spring的自己本身的web支持和通常框架模式的细致完整。然而,Spring替换struts,webwork或者其他的web方案非常的容易。这个对于Spring的web支持或者不同的地方,Spring允许你在web容器里面建立一个中间层,在测试环境或者标准独立的应用里面来设置重用你的商务逻辑。
还有就是在J2EE环境里面,可以让你你的商务逻辑不必依靠容器提供的服务,就比如像JTA,EJB的支持。良好的框架的一个web应用是可以运行在任何容器上,就比如,Tomcat或者Resin这些容器。值得注意的事,Spring不是和已经存在的解决方案进行竞争的关系。我们鼓励结合标准的技术,如Servlet,JSP,JTA,JNDI,JDBC和JDO,和其他非常匹配的工具,比方如Hibernate,Velocity,Log4J,和Cauchos Hessian/Burlap这类工具。这个框架的设计思想是你的应用处在需要改良的时候,你将可以对其做一些技术的选择:例如,如果你需要分布式事务处理,你可能需要用Spring框架的JTA Transaction Manager 来实现JTA服务。或者,用DataSourceTranscactionM anager 或者 HibernateTransction Manager 来实现美妙完美的单个数据库交换。
2、 Web MVC:Spring web框架的设计思想
Spring网络框架通过配置操作mappings可配置的处理程序,展示resolution,本地化和模板集成围绕着分派请求操作的servlet -DispatcherServlet分派请求处理程序,可配置的处理程序映射,决议,决议和语言环境和主题设计的。缺省的操作是一个非常简单的控制器接口,他只是提供了一个“ModelAndView handleRequest(request请求,response响应)”的方法。这已经可以将它应用于一个应用的程序控制器,但是,如果你想包含多个层次的控制 ,Abstract Controlerr,AbstractCommand Controllers,MultiAction Controllers,SimpleForm Controllers,AbstractWizardForm Controller将帮助你完成,应用程序控制器将代表那些子系统通常是子类。注意,你可以选择一个适当的基类:如果你没有web form(网络形式),你就不必用 Form Controller。这便就是和Struts最大的不同区别了。你可以把任何物体作为命令或者形式对象来操作任何对象:这就可以不需要接口工具或者一个基础类的驱动。Spring的数据绑定是非常的高度灵活的。举例来说,对待类型不匹配的验证错误,他描述了具有在应用范围内的校验错误的输入机制,但不是系统错误。
所以在你的形式对象里面你大可不需要复制你的业务对象的Spring框架中的属性作为字符串
表单对象,就能够处理无效的提交,或将字符串。相反,它通常比直接绑定到您的业务对象。这是另一个主要区别Struts是建立在需要基类行动和ActionForm——对任何类型的行动。只需要操作出错的子任务,或者适当的转换spring框架。换句话来说,他通常可以很好的字节绑定你的业务对象。这也是和Struts围绕请求基础类Action和ActionForm(每个action操作类型)建立主要的不同之一。
对比WebWork(网络系统),Spring框架更多的区别在于对象角:Spring框架支持控制器的概念,一个可选的操作命令或者表单对象,得到数据并传递给视图的模式这个模型。这个模式通常包含命令和表单对象,但有时也包含任意的参考数据。换句话来说,相反一个webwork aciton(网络系统动作) 联合了所有这些角到单独的对象中。网络系统不允许你用已经存在的业务对象作为你f表单的一部分,但是只生成各自相关Action操作类的bean属性。
最后,相同的操作请求的aciotn操作实例在一个视图里面获得赋值和形成人口集。因此,引用数据需要模仿作为行动的bean属性。这些可以说是太多的角在一个对象中。
然而,参考数据也需要作为action的属性被模拟。一个类里面有太多的角是值得讨论的。
关于视图:Spring框架的视图方案非常的灵活。甚至可以编写一个视图控制器实现通过respongse返回ModelAndview对象的null值,就可以直接写到一个视图。
在通常的状况下,一个ModelAndView实例结合了一个view(视图名称)和一个model Map(模型地图),包含了bean 名称和相应的通讯对象(像命令或者形式,参考数据,等等)。视图名称解析是非常高端的配置,不是通过bean名称 ,一个propertiese 文件,就是通过你自己的ViewResolver来实现的。这个抽象的model Map(模型映射)允许你在视图层面完成提取视图,没有任何的争辩麻烦:JSP ,速度,或者其他,每一种渲染器都可以直接完整集成使用。这个model Map(模型映射)还可以简单转化得到适当的格式化数据的转换,像JSP请求属性或者Velocity模板模式。
3、 集成:用Spring一个不同web框架
许多开发团队将为他们已有的项目或者新的项目已经获得的期限和工具进行投资。这里没有像Struts那样大量的图书和工具,但是同样我们又大量的拥有Spring开发技巧的开发人员。然而,如果你愿意生活在Strust的构架瑕疵中的话,它仍然是一种可行的选择web层而他将会是你在web层开发不错的选择。当然,其他应用也是一样。
如果你不想Spring框架的web MVC,但是又想借用Spring框架嫁接其他的解决方案,你可以非常简单的通过Spring框架来继承你自己的web框架。你可以非常简单的通过Context LoaderListener启动一个Spring root application context,并且,通过Struts 或者网络系统的action,利用Servletcontext属性(或者Spring的helper方法)存取它。值得注意的事,这里没有任何的ssm框架实现登录功能”plugings被调用,因此没有专门的集成:来自web层的视图,你可以简单的将Spring作为一个管理application context 实例入口点的类库。
所有你注册的bean和Spring框架的服务都可以在不需要Spring框架的web MVC的情况下都可以被你轻松掌握。Spring不是和Struts,Webwork这些应用进行竞争,他将作为一个纯web框架应用于很多领域,它解决了许多领域,纯web框架不从bean配置数据访问和事务处理。因为它不需要配置数据存储和事务操作。所以,你可以利用Spring提供的中间层和数据存储层来丰富你的应用,甚至,你只是想用JDBC或者Hibernate进行事务抽象。
4、 特点核对列表
如果聚焦于web支持,Spring框架的一些显著特点是:清楚的角分离:controller,validator,command object,form object,model object和 Dispatcher Servlet,handler ma
pping vs view resolver,等等。
强大而且直接简单的框架和作为javaBean的应用配置,包括简单的参照和应用程序上下文引用内容,例如,从web控制器到业务对象和数据校验器。
适应性,外挂:无论使用什么样的控制器你都需要得到替代Action/ActionForm所做的每件事情的方案(简单,命令,form,范例,多重action,或者定制一个)重用业务逻辑代码,而不是源于Action/ ActionForm一切。不需要复制:
你可以用已经有的业务逻辑对象作为命令或者form对象代替反射特定的actionform子类。可以定制的绑定和数据校验:作为应用级的输入机制的错误校验,固定日期和数字绑定,定制绑定和验证:类型不匹配,应用程序级验证错误,使违规值,本地化的日期和号码绑定等代替String-only表单对象手工解析和转换为业务对象。例如,通过手动检查和转换业务对象来替换单个的spring。可定制的操作,可定制的视图方案:通过名字/值 映射灵活的模型传送,用一个简单的方法从简单到复杂操作映射和视图方案策略。
本地定制和主题方案:Spring 没有taglib,完全支持于JSPs,JSTL,不需要额外的连接就可
以支持Veloctiy,等等。简单但是强大的tag library 避免混乱,最大限度的灵活拓展了标记代码。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。