SpringMVC处理过程

关于SpringMVC的工作流程我引用其官方文档上的一幅截图:

上面这幅图从宏观上粗略的介绍了SpringMVC的整个工作流程,简洁明了。

下面我从代码的角度去感受一下:

由于,我们在web.xml中声明了一个DispatcherServlet,那么,tomcat启动的时候就会初始化它。

我们知道,Servlet的初始化方法是init(),就从这里入手,看看它初始化都干了些什么

一、初始化

在HttpServletBean中有一个init方法

FrameworkServlet类中重写了initServletBean()方法

FrameworkServlet中的initWebApplicationContext()方法

Dispatcher类中重写onRefresh()方法

至此,我们看到DispatcherServlet初始化的时候顺带初始化了一堆组件,什么视图解析器、处理器映射之类的。

二、处理请求

因为DispatcherServlet是继承HttpServlet的,所以处理请求时会调用doGet或者doPost方法

在FrameworkServlet类中重写了doGet和doPost方法

FrameworkServlet中processRequest方法是这样的

它调用了doService方法,接下来,好戏开始了

DispatcherServlet重写了doService()方法

至此,请求处理完成

总结一下处理过程:

  1. 绑定资源到请求
  2. 检查是否文件上传
  3. 查找HandlerMappping获得HandlerExecutionChain
  4. 依次调用与处理器关联的所有拦截器的preHandle方法
  5. 调用处理器方法
  6. 依次调用与处理器关联的所有拦截器的postHandle方法
  7. 渲染视图
  8. 依次调用与处理器关联的所有拦截器的afterCompleting方法
时间: 2024-11-08 19:43:08

SpringMVC处理过程的相关文章

SpringMVC启动过程

1.  对于一个web应用,其部署在web容器中,web容器提供一个其一个全局的上下文环境,这个上下文环境就是ServletContext,它为后面的spring IoC容器提供宿主环境: 2.  web.xml中有配置ContextLoaderListener,也可以自定义一个实现ServletContextListener接口的Listener方法,web.xml中的配置实例如下: <listener> <listener-class>com.manager.init.Syst

springmvc 配置过程及详解

加入jar包 在web.xml中 添加spring监听器 <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> 添加spring容器(父容器)配置文件: <context-param> <param-name>contextConfigLocation</param

SpringMVC请求处理过程

接前面的"SpringMVC启动分析" 继续-- 作为一个Servlet,请求时从doGet和doPost开始的 DispatcherServlet的doGet和doPost是从FrameworkServlet继承来的 processRequest()中主要是调用doService()方法,它是在DispatcherServlet中具体实现的 doService中主要是调用doDispatch方法 这个方法就是SpringMVC处理过程的宏观流程,从这里可以看出大致流程如下: (1)判

深入源码分析SpringMVC执行过程

本文主要讲解 SpringMVC 执行过程,并针对相关源码进行解析. 首先,让我们从 Spring MVC 的四大组件:前端控制器(DispatcherServlet).处理器映射器(HandlerMapping).处理器适配器(HandlerAdapter)以及视图解析器(ViewResolver) 的角度来看一下 Spring MVC 对用户请求的处理过程,过程如下图所示: SpringMVC 执行过程 用户请求发送到前端控制器 DispatcherServlet. 前端控制器 Dispat

浅谈SpringMVC执行过程

通过深入分析Spring源码,我们知道Spring框架包括大致六大模块, 如Web模块,数据库访问技术模块,面向切面模块,基础设施模块,核心容器模块和模块, 其中,在Spring框架的Web模块中,又包含很多前端技术,如SpringMVC,Spring WebSocket,Spring WebPortlet等,在本篇文章中,我们主要分析SpringMVC模块, 在分析SpringMVC技术时,本篇文章将通过解读SpringMVC源码,并通过编译器断点调试追踪,研究Spring核心类的UML图,来

springMVC工作过程

学习springmvc之前先学习一下他的工作过程 如图 1.用户通过客户端向服务器发送请求,请求会被springMVC的前端控制器DispatchServlet所拦截. 2.DispatchServlet拦截到请求后,会调用handlerMapping处理器映射器. 3.处理器映射器根据请求url找到具体的处理器,生成处理器对象以及处理器拦截器(如果有就生成)一并返回给DispatchServlet. 4.DispatchServlet会通过返回信息选择合适的handlerAdapter处理器适

SpringMVC配置过程中出现的问题!

<c:set var="ctx" value="${pageContext.request.contextPath}" />不起作用,原因是web.xml没有定义了XML的版本,编码格式,还有重要的指明schema的来源 加载不了js和css(路径什么的都正确),是因为你的web.xml中忘记了配置拦截路径,所以.js文件都被拦截住了.写在引入springMVC代码前. <servlet-mapping> <servlet-name &

springMVC请求过程

SpringMVC框架是一个基于请求驱动的Web框架,并且使用了'前端控制器'模型来进行设计,再根据'请求映射规则'分发给相应的页面控制器进行处理. (一)整体流程 具体步骤: 1.  首先用户发送请求到前端控制器,前端控制器根据请求信息(如 URL)来决定选择哪一个页面控制器进行处理并把请求委托给它,即以前的控制器的控制逻辑部分:图中的 1.2 步骤: 2.  页面控制器接收到请求后,进行功能处理,首先需要收集和绑定请求参数到一个对象,这个对象在 Spring Web MVC 中叫命令对象,并

springmvc的过程及源码初涉

springmvc框架原理时序图 SpringMVC和Spring关系 springMVC作为spring项目中的子项目,其可以和spring web容器很好的兼容.其实现机制就是springMVC也会自己初始化一个IOC容器,然后将spring web的IOC容器作为父容器,这样就可以使用父容器中注入的bean了,由于是向上继承的,所以父容器无法使用子容器注入的Bean. 对于请求到Controller的映射,比较重要的是HandlerMapping和HandlerAdapter,Handle