英语原文共 4 页,剩余内容已隐藏,支付完成后下载完整资料
Spring的web MVC 构架模式
Juergen Hoeller
- 介绍:Spring应用程序框架
当第一次面对Spring框架,人们可能会想:“哦不,又一种web构架”。这篇文章将告诉你spring是与其他轻量级的应用框架有很明显的区别,它更专注于对web的支持,与Struts与Webwork有很大的差别。
与Struts或Webwork不同的是,spring是一个作用于所有层面的应用程序框架:它提供了bean的配置基础,AOP的支持,JDBC的框架提取,抽象事物的支持等等。它有一个具有代表性的特点:如果没有一定需要spring的支持,你就可以不去引入spring的类文件,如果你喜欢的话,你可以去重写它的每一部分。从spring的设计中来看,它帮你真正的实现了逻辑业务层与web展示层的分离:如验证应用不需要去依赖于controller也就是控制层。它的目的是可重用性和可测性:依赖不必要的框架是不能狗实现这两个目的的。
当然,spring自己的web支持是很好的集成框架的一种模式。尽管如此,它替换Struts,WebWork或者其他类似的框架是非常的容易的。Spring的web支持与其他不同的是,它允许你在web容器里面建立一个中间层,可以选择在测试环境中或者标准独立的应用中重用相同的业务逻辑。在J2EE的环境中,你的业务逻辑不必依赖像JTA、EJB这样的容器提供的服务-允许拥有良好架构的web应用程序在像Tomcat和resin这样的”简单”的容器中运行。
我们要注意的是,spring不是和已经存在的web框架进行竞争。它非常乐意与其进行结合,比如它可以很好的和Servlet,JSP,JTA,JNDI,JDBC和JDO等以及非常合适的工具如Hibernate,velocity,Log4j以及Cauchorsquo;s Hessian/Burlap等进行无缝集成。Spring的设计思想是在你的应用需要改进的时候可以进行技术上的选择:例如,如果你需要进行分布式事务的处理你就可以选择通过spring的JtaTransactionManager来实现JTA服务,或者用DataSourceTransactionManager or HibernateTransactionManager来实现单个数据库数据的交换。
- Web MVC框架:Spring Web框架的设计思想
Spring的web框架的设计原理是通过操作mappings,视图resolution,
地化以及主题模板来围绕着分派请求操作的servlet-DespatcherServlet来设计的。缺省的处理器是一个非常简单的Controller接口,它只是提供了一个”ModelAndView的handleRequest(请求,相应)”方法。这已经能用于应用程序的控制器,但是你如果要用包含多个层次的,例如AbstractController, AbstractCommandController, MultiActionController, SimpleFormController, AbstractWizardFormController这些将帮你实现。应用的控制器是这些类的子类。需要注意的是,你可以选择一个适当的基类:如果你没有表单,你就不需要用到FormController。这是与Struts之间的一个很大的区别。
你能通过一个命令或者表单对象去操作任何对象:没有必要去实现一个接口或者从基类进行继承。Spring的数据绑定相对比较灵活,例如它包括了具有在应用范围内的校验错误的输入机制,而不是系统上的错误。所以,你不必复制你的业务对象的属性字符串在你的表单对象中,这样就能够处理无效的表单提交或者对字符串进行转换。相反的是,它一般情况是直接绑定到你的业务对象里面。这也是和Struts的另一个重要的区别,不需要围绕着Action和ActionForm进行建立。
对比WebWork,Spring更多的特点在于对象:它支持控制器,可选的命令或者表单对象,以及传递到视图页面上内容。模型不仅包含命令对象或表单对象,也包括任何我们引用的数据。但是,WebWork的Action将所有的这些角色都联系到一个单独的对象中。WebWork允许你使用现有的业务对象作为你表单的一部分,单身它只能操作它们各自的Action类的bean属性。最后,进行处理请求的Action实例获取用于视图的表单数据。因此,引用数据也被定义成Action的bean属性。这些都可以说是一个类里面包括了太多的对象。
关于视图:Spring对视图的解析相当灵活。一个controller甚至可以通过response进行响应,返回一个ModelAndView对象为空。在正常的情况下,一个ModelAndView实例包含一个视图和模型映射表,其中包括了所有bean的名称及其相应的对象(如命令,方式或者引用的数据等)。视图的名称是可以进行配置的,比如通过bean的名字,属性文件或者你自己的视图解析器来实现。抽象的模型映射允许在你的视图里面完成提取,毫无疑问:JSP,Velocity或者其他的页面框架都可以直接集成。该模型映射表仅仅将数据转换为合适的格式,比如JSP请求的属性或者Velocity模板模型。
- 使用和Spring不同的web框架
很多开发团队会尽量去发展项目,无论是现有的项目还是新的项目。具体来说的话,即使没有像Struts那样大量的书籍和工具,但是也有很多有这方面经验的开发人员。因此,如果你能够适应Struts这样框架的架构缺陷,它依旧是做web项目的的一个很好的选择。这一点同样适用于WebWork和其他的web框架。
如果你是不想使用Spring的webMvc而是打算利用Spring提供的其他方式,你可以轻松的集成你选择使用的Spring的Web框架。你只需要通过ContextLoaderListener来启动Spring的基础应用,并通过 Struts或者WebWork的action利用ServletContext属性(或者spring提供的方法)来访问它。请注意,没有任何的”plugins”被调用,因此没有去专门的集成:从web层的角度看,你只是在简单的使用Spring作为一个jar包库,是以基础方法实例为入口进行访问。所有你定义的bean和Spring的服务都可以被你很容易的控制,即使在没有spring的web的情况下。Spring并没有在使用方法上与Struts或WebWork进行竞争,它只是解决了许多这些web框架没有的这些功能,比如bean的配置,数据的访问和事务的处理。所以,你可以用丰富的Spring中间层和/或者数据访问层来进行你的应用,即使你只是想使用JDBC或者Hibernate来进行事务的抽象。
- 特点核对列表
如果仅仅关注web支持,Spring独特的特点是:角色分离:controller vs validator vs command object vs form object vs model object, DispatcherServlet vs handler mapping vs view resolver等等。强大和直接的框架来为JavaBeans的应用进行配置,包括简单的参照和应用配置比如:从web控制器到业务对象的数据校验。但其并不具有强制性:使用任何你需要的控制器的子类(简单,命令,表单,范例,多重发Action或者自定义),而不是从Action/ActionForm继承一切。复用业务逻辑代码,不需要复制处理:你可以使用现在的业务对象作为命令或者表单对象,而不是用ActionForm的子类。可以进行定制的绑定和验证:将类型不匹配而保存错误的值进行验证,本地化的日期和数字绑定等,而不是只使用字符串表单对象去手动解析它并转换到业务对象中进行处理。可处理的处理器映射,可定制的视图方案:通过名称或值映射,处理器映射和视图方案进行灵活的模型转换,从简单到复杂,而不是简单的一对一的方法。可定制的本地化及主题解析,支持JSP的使用和不使用Spring的标签库,支持JSTL,不需要额外的连接其他前端框架,避免了HTML生成的麻烦,通过这样的处理,最大限度且灵活的扩展了标记语言的使用
剩余内容已隐藏,支付完成后下载完整资料
资料编号:[31024],资料为PDF文档或Word文档,PDF文档可免费转换为Word
以上是毕业论文外文翻译,课题毕业论文、任务书、文献综述、开题报告、程序设计、图纸设计等资料可联系客服协助查找。