zoukankan      html  css  js  c++  java
  • SpringMVC工作原理

    SpringMVC框架介绍:

        Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。

        

    spring 框架提供了构建 Web 应用程序的全功能 MVC 模块。使用 Spring 可插入的 MVC 架构,可以选择是使用内置的 Spring Web 框架还是 Struts 这样的 Web 框架。通过策略接口,Spring 框架是高度可配置的,而且包含多种视图技术,例如 JavaServer Pages(JSP)技术、Velocity、Tiles、iText 和 POI。Spring MVC 框架并不知道使用的视图,所以不会强迫您只使用 JSP 技术。

    Spring MVC 分离了控制器、模型对象、分派器以及处理程序对象的角色,这种分离让它们更容易进行定制。

         Spring的MVC框架主要由DispatcherServlet、处理器映射、处理器(控制器)、视图解析器、视图组成。

        在讲springMVC之前我们先来看一下什么是MVC模式

        MVC:MVC是一种设计模式

        MVC的原理图:

     

    分析:

       M-Model 模型(完成业务逻辑:有javaBean构成,service+dao+entity)

       V-View 视图(做界面的展示  jsp,html……)

       C-Controller 控制器(接收请求—>调用模型—>根据结果派发页面)

    springMVC是什么:

      springMVC是一个MVC的开源框架,springMVC=struts2+spring,springMVC就相当于是Struts2加上sring的整合,但是这里有一个疑惑就是,springMVC和spring是什么样的关系呢?这个在百度百科上有一个很好的解释:意思是说,springMVC是spring的一个后续产品,其实就是spring在原有基础上,又提供了web应用的MVC模块,可以简单的把springMVC理解为是spring的一个模块(类似AOP,IOC这样的模块),网络上经常会说springMVC和spring无缝集成,其实springMVC就是spring的一个子模块,所以根本不需要同spring进行整合。

    SpringMVC的原理图:

    看到这个图大家可能会有很多的疑惑,现在我们来看一下这个图的步骤:(可以对比MVC的原理图进行理解)

      第一步:用户发起请求到前端控制器(DispatcherServlet)

      第二步:前端控制器请求处理器映射器(HandlerMappering)去查找处理器(Handle):通过xml配置或者注解进行查找

      第三步:找到以后处理器映射器(HandlerMappering)像前端控制器返回执行链(HandlerExecutionChain)

      第四步:前端控制器(DispatcherServlet)调用处理器适配器(HandlerAdapter)去执行处理器(Handler)

      第五步:处理器适配器去执行Handler

      第六步:Handler执行完给处理器适配器返回ModelAndView

      第七步:处理器适配器向前端控制器返回ModelAndView

      第八步:前端控制器请求视图解析器(ViewResolver)去进行视图解析

      第九步:视图解析器像前端控制器返回View

      第十步:前端控制器对视图进行渲染

      第十一步:前端控制器向用户响应结果

     

    看到这些步骤我相信大家很感觉非常的乱,这是正常的,但是这里主要是要大家理解springMVC中的几个组件:

      前端控制器(DispatcherServlet):接收请求,响应结果,相当于电脑的CPU。

      处理器映射器(HandlerMapping):根据URL去查找处理器

      处理器(Handler):(需要程序员去写代码处理逻辑的)

      处理器适配器(HandlerAdapter):会把处理器包装成适配器,这样就可以支持多种类型的处理器,类比笔记本的适配器(适配器模式的应用)

      视图解析器(ViewResovler):进行视图解析,多返回的字符串,进行处理,可以解析成对应的页面

     

     

  • 相关阅读:
    Mac环境下svn的使用
    开发中常见问题集锦
    【C语言】07基本语句和运算
    【C语言】05printf和scanf函数
    【C语言】03第一个C程序代码分析
    【C语言】06基本数据类型
    【C语言】04函数
    【C语言】01C语言概述
    让UIWebView弹出键盘上的按钮显示中文
    【C语言】02第一个C程序
  • 原文地址:https://www.cnblogs.com/ckwblogs/p/6766934.html
Copyright © 2011-2022 走看看