SpringMVC工作流程

Posted 好大的月亮

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SpringMVC工作流程相关的知识,希望对你有一定的参考价值。

SpringMVC具体处理请求流程

概述
当有请求过来,首先会先调用HttpServletservice(ServletRequest req, ServletResponse res)方法,在service方法内部调用service(HttpServletRequest request, HttpServletResponse response)重载方法,在入参为HttpServletRequest和HttpServletResponse的重载方法中对具体的请求做了区分。

service(HttpServletRequest request, HttpServletResponse response)重载方法又被抽象类FrameworkServlet.service重写了,在方法内部其实又调用了HttpServlet.service,而HttpServlet.service中执行的各种doXXX方法又被FrameworkServlet重写了,最后都汇集到FrameworkServlet.processRequest方法中。

FrameworkServlet.processRequest中又汇集到内部FrameworkServlet.doService(HttpServletRequest request, HttpServletResponse response)抽象方法中.而实现这个抽象方法的就是熟悉的DispatcherServlet.doService(HttpServletRequest request, HttpServletResponse response)了。

DispatcherServlet.doService中又汇集到DispatcherServlet.doDispatch进行请求分发;
先解释三个概念

  1. Handler:用@RequestMapping标注的所有方法都可以看做Handler
  2. HandlerMapping:根据Request查找Handler
  3. HandlerAdapter:因为SpirngMVCHandler是任意形式的,所以需要HandlerAdapter执行任意形式的Handler

doDispatch方法分发请求流程

  1. 根据Request查找Handler
  2. 根据Handler查找HandlerAdapter
  3. HandlerAdapter使用Hanler处理请求
  4. 调用processDispatchResult返回结果

具体流程

HttpServlet2个service方法如下,其被抽象子类FrameworkServlet.service
所重写.

FrameworkServlet.service方法,可以看到除了PATCH方式其它又执行了父类HttpServlet.service.ps:(这里提一下这个PATCH方式,类似upadte,update是执行更新操作,而PATCH是saveOrUpdate的意思,不存在就save)

HttpServlet.service中无非就是if else执行各种请求方式,在执行各种doXXX方法时(除了doHead)都被FrameworkServlet重写,执行子类的重写方法

FrameworkServlet中的各种doXXX方法都汇集到FrameworkServlet.processRequest(HttpServletRequest request, HttpServletResponse response)方法中,而内部又汇集到FrameworkServlet.doService(HttpServletRequest request, HttpServletResponse response)抽象方法中.而实现这个抽象方法的就是熟悉的DispatcherServlet.doService(HttpServletRequest request, HttpServletResponse response)

DispatcherServlet.doService中又汇集到DispatcherServlet.doDispatch进行请求分发;
分发步骤

  1. 根据Request查找Handler
  2. 根据Handler查找HandlerAdapter
  3. HandlerAdapter使用Hanler处理请求
  4. 调用processDispatchResult返回结果

以上是关于SpringMVC工作流程的主要内容,如果未能解决你的问题,请参考以下文章

springmvc工作流程面试题有哪些?springmvc工作流程面试题分享

SpringMVC概述+SpringMVC运行流程+SpringMVC搭建

不会英语怎么说springmvc工作原理

springmvc的工作原理,简单的概括一下

SpringMVC的工作流程

学习笔记——SpringMVC拦截器的两种装配方式;SpringMVC拦截器工作原理;SpringMVC中的异常处理器;SpringMVC工作原理