浅析Spring MVC的工作原理及其与Spring的关系

Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块。使用 Spring 可插入的 MVC 架构,从而在使用Spring进行WEB开发时,可以选择使用Spring的SpringMVC框架或集成其他MVC开发框架,如Struts1,Struts2等。

Spring MVC的整个工作过程是从一个HTTP请求开始:

1)DispatcherServlet接收到请求后,根据对应配置文件中配置的处理器映射,找到对应的处理器映射项(HandlerMapping),根据配置的映射规则,找到对应的处理器(Handler)。

2)调用相应处理器中的处理方法,处理该请求,处理器处理结束后会将一个ModelAndView类型的数据传给DispatcherServlet,这其中包含了处理结果的视图和视图中要使用的数据。

3)DispatcherServlet根据得到的ModelAndView中的视图对象,找到一个合适的ViewResolver(视图解析器),根据视图解析器的配置,DispatcherServlet将视图要显示的数据传给对应的视图,最后给浏览器构造一个HTTP响应。 DispatcherServlet是整个Spring MVC的核心。


浅析Spring MVC的工作原理及其与Spring的关系_第1张图片

DispatcherServlet负责接收HTTP请求组织协调Spring MVC的各个组成部分。其主要工作有以下三项:

1)截获符合特定格式的URL请求。

2)初始化DispatcherServlet上下文对应的WebApplicationContext,并将其与业务层、持久化层的WebApplicationContext建立关联。

3)初始化Spring MVC的各个组成组件,并装配到DispatcherServlet中。

然后简单说一下Spring MVC与Spring的关系。Spring可以说是一个管理bean的容器,也可以说是包括很多开源项目的总称,而Spring MVC是其中一个开源项目。如果简单进行一个流程,当http请求一到,由容器(如:Tomcat)解析http形成一个request,通过映射关系(比如路径,方法,参数)被Spring MVC一个分发器去找到可以处理这个请求的bean,在Tomcat里面就由Spring管理bean的一个池子(bean容器)里面找到。处理完了就把响应返回。

基于Spring实现的MVC框架是不能不使用Spring的。单独使用Spring MVC,因为其需要依赖IOC容器。但是如果单独为了更好的理解SpringMVC这种MVC框架,就把它和Struts/Struts2等一系列的MVC框架对比理解,理解其只是基于DispatcherServlet或者Filter做一个前端分发器,最终把这个框架引导起来,进行其自己的逻辑处理。

你可能感兴趣的:(浅析Spring MVC的工作原理及其与Spring的关系)