Spring4.3.8MVC中文文档-22.1-Introduction to Spring Web MVC framework-简介SpringMVC

来源:互联网 发布:网络侦探年糕兽进化 编辑:程序博客网 时间:2024/05/21 09:22

      SpringMVC (Web model-view-controller ) 框架是围绕着一个 前置控制器DispatcherServlet 设计,它将请求分发给处理程序,具有可配置的处理程序映射(handler mappings), 视图解析( view resolution), 区域设置(locale), 时区(time zone)和主题版面解析(theme)以及上传文件.默认的处理程序是基于 @Controller(控制层) 和 @RequestMapping(请求映射) 注解, 提供广泛的灵活处理方法. 通过引入Spring3.0 , @Controller 机制还允许您通过 @PathVariable注释和其他功能创建RESTful Web站点和应用程序.      

     "开放扩展…​"是SpringMVC和Spring一个关键设计原则,通俗点说就是  "Open for extension(可拓展), closed for modification(不修改)" .

      一些SpringMVC的核心类是被标识成 final. 作为一个猿类(此猿非彼猿)你是无法去实现这些类去满足你自己的需求的. 这个可扩展,不可修改的原则是经过慎重考虑设计的.

有关这个原则的解释, 参考《深入浅出SpringMVC和WebFlow》

     在springMVC框架中,你可以使用任何对象作为一个命令或者表单对象,你不用实现框架接口,Spring的数据绑定非常灵活,例如:它将类型不匹配视作一个程序能自我识别的验证错误, 而不是系统错误。因此,您不用将您的业务对象的属性复制成一个简单无类型的字符串,仅处理无效提交,或者正确转换字符串。 相反,通常最好直接绑定到您的业务对象。

    Spring的视图解析是非常灵活的,一个controller通常负责准备一个具有数据的模型(model)Map,并且指定返回的视图名称。但是controller也可以直接写出一个响应流并完成(结束)这个请求。 视图名称的解析通过文件扩展或者accept表头内容类型协商进行高度配置,通过bean名称,属性文件或甚至自定义的ViewResolver实现。Model(MVC中的M)是一个Map接口,可以完全提取视图技术。 您可以直接与基于模板的渲染技术(如JSP,Velocity和Freemarker)集成,或直接生成XML,JSON,Atom和许多其他类型的内容。Model Map简单地转换成适当的格式,如JSP请求属性, Velocity模板模型。

    22.1.1 SpringMVC特性

     Spring Web Flow

         SWF旨在成为管理web应用程序页面流的最佳解决方案,SWF集成了一些现有框架,像SpringMVC和JSF,同时也有Servlet和portlet环境。如果你有一个业务流程需要从对话模型而不是简单的request模型中受益,那SWF就是解决方案,SWF允许您将逻辑页面流作为在不同情况下的独立模块捕获,因此非常适合构建指导用户通过导航操作驱动业务流程的web应用模块。

      Spring框架的Web模块包含许多独特的特性(吹牛模式开启):

               1.低耦合 

               2. 把框架和应用程序类作为javaBean来进行强大直接的配置

             3.你可以根据你的需要定义任何一个controller方法签名,可能会从给定方案中使用任何一个注解(例如@RequestHeader, @PathVariable等)

             4.可复用的业务代码,杜绝重复造轮子

             5.自定义的绑定和验证

             6.自定义的处理器映射和视图解析

             7.灵活的模型传输

               8.自定义的本地设置,时区和主题解析,支持带有或不带有Spring标签库的JSP,支持JSTL,支持Velocity,无需额外的桥接等。

             9.一个简单却强大的JSP标签库作为Spring标签库而总所周知,为数据绑定和主题等功能提供支持

             10.在Spring 2.0中引入的JSP表单标签库,使得在JSP页面中的写入表单更容易 

              11.Bean的生命周期作用于当前的HTTP request或者HTTP Session.这并不是SpringMVC的自身特性,而是SpringMVC使用的WebApplicationContext容器的特性       


  22.1.2其它MVC实现的可插拔性

       对于某些项目,使用非SpringMVC框架实现会更加完美。许多团队更喜欢对现有的技术和工具投入精力,例如JSF.如果你不想使用SPringMVC,但是打算使用Spring提供的其它解决方案,你可以将Spring框架非常容易的与MVC框架集成。你只需要通过ContextLoaderListener来启动Spring的底层application context*(一个容器。通过容器可以取相应bean的值属性等).

        即使没有Spring的Web MVC,您的注册bean和Spring的服务也可以在您的指尖。 在这种情况下,Spring不会与其他Web框架竞争。 它简单地解决了纯Web MVC框架从bean配置到数据访问和事务处理的许多方面。 所以您可以使用Spring中间层和/或数据访问层来丰富您的应用程序,即使您只想使用JDBC或Hibernate的事务抽象。(此段纯Google)






阅读全文
1 0
原创粉丝点击