SpringMVC工作流程
Posted 好大的月亮
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SpringMVC工作流程相关的知识,希望对你有一定的参考价值。
SpringMVC具体处理请求流程
概述
当有请求过来,首先会先调用HttpServlet
的service(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
进行请求分发;
先解释三个概念
Handler
:用@RequestMapping
标注的所有方法都可以看做Handler
。HandlerMapping
:根据Request
查找Handler
。HandlerAdapter
:因为SpirngMVC
的Handler
是任意形式的,所以需要HandlerAdapter
执行任意形式的Handler
。
doDispatch
方法分发请求流程
- 根据
Request
查找Handler
- 根据
Handler
查找HandlerAdapter
HandlerAdapter
使用Hanler
处理请求- 调用
processDispatchResult
返回结果
具体流程
HttpServlet
的2个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
进行请求分发;
分发步骤
- 根据
Request
查找Handler
- 根据
Handler
查找HandlerAdapter
HandlerAdapter
使用Hanler
处理请求- 调用
processDispatchResult
返回结果
以上是关于SpringMVC工作流程的主要内容,如果未能解决你的问题,请参考以下文章
springmvc工作流程面试题有哪些?springmvc工作流程面试题分享
SpringMVC概述+SpringMVC运行流程+SpringMVC搭建
学习笔记——SpringMVC拦截器的两种装配方式;SpringMVC拦截器工作原理;SpringMVC中的异常处理器;SpringMVC工作原理