码迷,mamicode.com
首页 > 编程语言 > 详细

Spring MVC简介

时间:2020-01-25 11:45:50      阅读:115      评论:0      收藏:0      [点我收藏+]

标签:info   位置   工作原理   上传文件   style   context   ini   框架   lock   

Spring MVC体系概述

  Spring MVC框架围绕DispatcherServlet这个核心展开,DispatcherServlet是Spring MVC的总导演、总策划,它负责截获请求并将其分派给相应的处理器处理。Spring MVC框架包括注解驱动控制器、请求及响应的信息处理、视图解析、本地化解析、上传文件解析、异常处理及表单标签绑定等内容。

Spring MVC体系结构

  Spring MVC是基于Model 2实现的技术框架,Model 2是经典的MVC(Model、View、Control)模型在Web应用中的变体,这个改变主要源于HTTP协议的无状态性。Model 2的目的和MVC一样,也是利用处理器分离模型、视图和控制,达到不同技术层级间松散层耦合的效果,提高系统灵活性、复用性和可维护性。

  从接收请求到返回相应,Spring MVC框架的众多组件通力配合、各司其职,有条不紊地完成分内工作。在整个框架中,DispatcherServlet处于核心的位置,它负责协调和阻止不同组件以完成请求处理并返回相应的工作。和大多数Web MVC框架一样,Spring MVC通过一个前端Servlet接受所有的请求,并将具体工作委托给其他组件进行处理,DispatcherServlet就是Spring MVC的前端Servlet。

技术图片

 

 

  1.  整个处理过程始于客户端发出一个HTTP请求,Web应用服务器接受到这个请求。如果匹配DispatcherServlet的请求映射路径(在web.xml)中指定,则Web容器将该请求转交给DispatcherServlet处理。
  2. DispatcherServlet接受到请求后,将根据请求的信息(包括URL、HTTP方法、请求报文头、请求参数、Cookie等)及HandlerMapping的配置找到处理请求的处理器(Handler),可将HandlerMapping看作路由控制器,将Handler看作目标主机。在Spring MVC中并没有定义一个Handler接口,实际上,任何一个Object都可以成为请求处理器。
  3. 在DispatcherServlet根据HandlerMapping得到对应当前请求的Handler后,通过HandlerAdapter对Handler进行封装,再以统一的适配器接口调用Handler。HandlerAdapter是Spring MVC的框架级接口,顾名思义,HandlerAdapter是一个适配器,它用统一的接口对各种Handler方法进行调用。
  4. 处理器完成业务逻辑的处理后将返回一个ModelAndView给DispatcherServlet,ModelAndView包含了视图逻辑名和模型数据信息。
  5. ModelAndView中包含的是“逻辑视图名”而非真正的视图对象,DispatcherServlet借由ViewResolver完成逻辑视图名到真实视图对象的解析工作。
  6. 当得到真实视图对象View以后 ,DispatcherServlet就使用这个View对象对ModelAndView中的模型数据进行视图渲染。
  7. 最终客户端得到的响应信息可能是一个普通的HTML页面,也可能是XML或JSON串。

 DispatcherServlet

  DispatcherServlet是Spring MVC的核心,它负责接收HTTP请求并协调SpringMVC的各个组件完成请求处理工作。和其他Servlet一样,用户必须在web.xml中配置好DispatcherServlet。

Spring如何将上下文中的Spring MVC组件装配到DispatcherServlet中 

  DispatcherServlet的initStategies()方法将在WebApplicationContext初始化后自动执行,此时Spring上下文中的Bean已经初始化完毕。该方法的工作原理是:通过反射机制查找并装配Spring容器中用户显式自定义的组件Bean,如果找不到就装配默认的组件实例。

Spring MVC简介

标签:info   位置   工作原理   上传文件   style   context   ini   框架   lock   

原文地址:https://www.cnblogs.com/ELAIRS/p/12232883.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!