mirror of
https://github.com/youthlql/JavaYouth.git
synced 2026-03-13 21:33:42 +08:00
图床更新,请注意查看readme
This commit is contained in:
@@ -16,7 +16,7 @@ date: 2022-06-21 12:01:02
|
||||
|
||||
## 请求的处理链路
|
||||
|
||||
<img src="https://npm.elemecdn.com/youthlql@1.0.6/spring-sourcecode-v1/chapter_09/image-20211017194744212.png"/>
|
||||
<img src="https://upyunimg.imlql.cn/youthlql@1.0.6/spring-sourcecode-v1/chapter_09/image-20211017194744212.png"/>
|
||||
|
||||
1. tomcat里面可以部署多个项目应用。/abc_test和mvc_test这种就是项目路径,用于区分多个项目
|
||||
2. 在以前的Servlet开发中,每一个路径都需要有一个Servlet来处理。比如上图所画
|
||||
@@ -26,7 +26,7 @@ date: 2022-06-21 12:01:02
|
||||
|
||||
### Servlet继承树
|
||||
|
||||
<img src="https://npm.elemecdn.com/youthlql@1.0.6/spring-sourcecode-v1/chapter_09/image-20211017195927505.png"/>
|
||||
<img src="https://upyunimg.imlql.cn/youthlql@1.0.6/spring-sourcecode-v1/chapter_09/image-20211017195927505.png"/>
|
||||
|
||||
|
||||
|
||||
@@ -41,7 +41,7 @@ date: 2022-06-21 12:01:02
|
||||
|
||||
### Debug调用栈
|
||||
|
||||
<img src="https://npm.elemecdn.com/youthlql@1.0.6/spring-sourcecode-v1/chapter_09/image-20211017205544154.png" />
|
||||
<img src="https://upyunimg.imlql.cn/youthlql@1.0.6/spring-sourcecode-v1/chapter_09/image-20211017205544154.png" />
|
||||
|
||||
### DispatcherServlet#doService()
|
||||
|
||||
@@ -191,7 +191,7 @@ date: 2022-06-21 12:01:02
|
||||
|
||||
### doDispatch处理大流程图
|
||||
|
||||
<img src="https://npm.elemecdn.com/youthlql@1.0.6/spring-sourcecode-v1/chapter_09/doDispatch处理大流程.jpg">
|
||||
<img src="https://upyunimg.imlql.cn/youthlql@1.0.6/spring-sourcecode-v1/chapter_09/doDispatch处理大流程.jpg">
|
||||
|
||||
|
||||
|
||||
@@ -210,7 +210,7 @@ protected HttpServletRequest checkMultipart(HttpServletRequest request) throws M
|
||||
}
|
||||
```
|
||||
|
||||
<img src="https://npm.elemecdn.com/youthlql@1.0.6/spring-sourcecode-v1/chapter_09/image-20211017205843256.png" />
|
||||
<img src="https://upyunimg.imlql.cn/youthlql@1.0.6/spring-sourcecode-v1/chapter_09/image-20211017205843256.png" />
|
||||
|
||||
咱们这里目前连解析器都没有,所以就直接返回了
|
||||
|
||||
@@ -268,7 +268,7 @@ public boolean isMultipart(HttpServletRequest request) {
|
||||
|
||||
[官网介绍](https://docs.spring.io/spring-framework/docs/current/reference/html/web.html#mvc-servlet-special-bean-types)
|
||||
|
||||
<img src="https://npm.elemecdn.com/youthlql@1.0.6/spring-sourcecode-v1/chapter_09/image-20211017210137817.png" />
|
||||
<img src="https://upyunimg.imlql.cn/youthlql@1.0.6/spring-sourcecode-v1/chapter_09/image-20211017210137817.png" />
|
||||
|
||||
|
||||
|
||||
@@ -328,7 +328,7 @@ public boolean isMultipart(HttpServletRequest request) {
|
||||
|
||||
### Debug调用栈
|
||||
|
||||
<img src="https://npm.elemecdn.com/youthlql@1.0.6/spring-sourcecode-v1/chapter_09/image-20211018162558076.png" />
|
||||
<img src="https://upyunimg.imlql.cn/youthlql@1.0.6/spring-sourcecode-v1/chapter_09/image-20211018162558076.png" />
|
||||
|
||||
|
||||
|
||||
@@ -381,7 +381,7 @@ public boolean isMultipart(HttpServletRequest request) {
|
||||
|
||||
|
||||
|
||||
<img src="https://npm.elemecdn.com/youthlql@1.0.6/spring-sourcecode-v1/chapter_09/image-20211018164740715.png" />
|
||||
<img src="https://upyunimg.imlql.cn/youthlql@1.0.6/spring-sourcecode-v1/chapter_09/image-20211018164740715.png" />
|
||||
|
||||
|
||||
|
||||
@@ -491,7 +491,7 @@ org.springframework.web.servlet.FlashMapManager=org.springframework.web.servlet.
|
||||
|
||||
### DispatcherServlet#getHandler()根据请求拿Controller
|
||||
|
||||
<img src="https://npm.elemecdn.com/youthlql@1.0.6/spring-sourcecode-v1/chapter_09/image-20211018165759982.png" />
|
||||
<img src="https://upyunimg.imlql.cn/youthlql@1.0.6/spring-sourcecode-v1/chapter_09/image-20211018165759982.png" />
|
||||
|
||||
|
||||
|
||||
@@ -506,13 +506,13 @@ org.springframework.web.servlet.FlashMapManager=org.springframework.web.servlet.
|
||||
|
||||
|
||||
|
||||
<img src="https://npm.elemecdn.com/youthlql@1.0.6/spring-sourcecode-v1/chapter_09/image-20211018170430551.png"/>
|
||||
<img src="https://upyunimg.imlql.cn/youthlql@1.0.6/spring-sourcecode-v1/chapter_09/image-20211018170430551.png"/>
|
||||
|
||||
BeanNameUrlHandlerMapping里找不到映射关系,就直接下一个循环了。咱们主要看RequestMappingHandlerMapping怎么处理的
|
||||
|
||||
## RequestMappingHandlerMapping处理流程
|
||||
|
||||
<img src="https://npm.elemecdn.com/youthlql@1.0.6/spring-sourcecode-v1/chapter_09/image-20211018170624402.png" />
|
||||
<img src="https://upyunimg.imlql.cn/youthlql@1.0.6/spring-sourcecode-v1/chapter_09/image-20211018170624402.png" />
|
||||
|
||||
|
||||
|
||||
@@ -569,7 +569,7 @@ F7进入`mapping.getHandler(request)`
|
||||
}
|
||||
```
|
||||
|
||||
<img src="https://npm.elemecdn.com/youthlql@1.0.6/spring-sourcecode-v1/chapter_09/image-20211018172011789.png" />
|
||||
<img src="https://upyunimg.imlql.cn/youthlql@1.0.6/spring-sourcecode-v1/chapter_09/image-20211018172011789.png" />
|
||||
|
||||
F7进入`getHandlerInternal(request)`
|
||||
|
||||
@@ -609,7 +609,7 @@ F7进入`getHandlerInternal(request)`
|
||||
|
||||
|
||||
|
||||
<img src="https://npm.elemecdn.com/youthlql@1.0.6/spring-sourcecode-v1/chapter_09/image-20211018172342398.png" />
|
||||
<img src="https://upyunimg.imlql.cn/youthlql@1.0.6/spring-sourcecode-v1/chapter_09/image-20211018172342398.png" />
|
||||
|
||||
F7进入`lookupHandlerMethod(lookupPath, request)`
|
||||
|
||||
@@ -617,7 +617,7 @@ F7进入`lookupHandlerMethod(lookupPath, request)`
|
||||
|
||||
### AbstractHandlerMethodMapping#lookupHandlerMethod()真正根据URL查Controller
|
||||
|
||||
<img src="https://npm.elemecdn.com/youthlql@1.0.6/spring-sourcecode-v1/chapter_09/image-20211018173123281.png"/>
|
||||
<img src="https://upyunimg.imlql.cn/youthlql@1.0.6/spring-sourcecode-v1/chapter_09/image-20211018173123281.png"/>
|
||||
|
||||
|
||||
|
||||
@@ -627,7 +627,7 @@ F7进入`lookupHandlerMethod(lookupPath, request)`
|
||||
|
||||
### 返回到AbstractHandlerMethodMapping#getHandlerInternal()
|
||||
|
||||
<img src="https://npm.elemecdn.com/youthlql@1.0.6/spring-sourcecode-v1/chapter_09/image-20211018185954647.png"/>
|
||||
<img src="https://upyunimg.imlql.cn/youthlql@1.0.6/spring-sourcecode-v1/chapter_09/image-20211018185954647.png"/>
|
||||
|
||||
这个时候是已经找到了由哪个处理器处理,接着返回
|
||||
|
||||
@@ -635,7 +635,7 @@ F7进入`lookupHandlerMethod(lookupPath, request)`
|
||||
|
||||
返回到这一步,准备执行`getHandlerExecutionChain(handler, request)`
|
||||
|
||||
<img src="https://npm.elemecdn.com/youthlql@1.0.6/spring-sourcecode-v1/chapter_09/image-20211018190338925.png" />
|
||||
<img src="https://upyunimg.imlql.cn/youthlql@1.0.6/spring-sourcecode-v1/chapter_09/image-20211018190338925.png" />
|
||||
|
||||
|
||||
|
||||
@@ -661,20 +661,20 @@ F7进入`lookupHandlerMethod(lookupPath, request)`
|
||||
}
|
||||
```
|
||||
|
||||
<img src="https://npm.elemecdn.com/youthlql@1.0.6/spring-sourcecode-v1/chapter_09/image-20211018190711035.png" />
|
||||
<img src="https://upyunimg.imlql.cn/youthlql@1.0.6/spring-sourcecode-v1/chapter_09/image-20211018190711035.png" />
|
||||
|
||||
- 咱们没写拦截器,就没有。
|
||||
- 继续往回返
|
||||
|
||||
### 返回到DispatcherServlet#getHandler()
|
||||
|
||||
<img src="https://npm.elemecdn.com/youthlql@1.0.6/spring-sourcecode-v1/chapter_09/image-20211018190924151.png" />
|
||||
<img src="https://upyunimg.imlql.cn/youthlql@1.0.6/spring-sourcecode-v1/chapter_09/image-20211018190924151.png" />
|
||||
|
||||
这里就是责任链模式,有能处理的handler就直接返回
|
||||
|
||||
### 返回到DispatcherServlet#doDispatch()
|
||||
|
||||
<img src="https://npm.elemecdn.com/youthlql@1.0.6/spring-sourcecode-v1/chapter_09/image-20211018191048955.png" />
|
||||
<img src="https://upyunimg.imlql.cn/youthlql@1.0.6/spring-sourcecode-v1/chapter_09/image-20211018191048955.png" />
|
||||
|
||||
自此RequestMappingHandlerMapping处理结束
|
||||
|
||||
@@ -754,9 +754,9 @@ class MappingRegistry {
|
||||
|
||||
### Debug调用栈
|
||||
|
||||
<img src="https://npm.elemecdn.com/youthlql@1.0.6/spring-sourcecode-v1/chapter_09/image-20211018174537002.png" />
|
||||
<img src="https://upyunimg.imlql.cn/youthlql@1.0.6/spring-sourcecode-v1/chapter_09/image-20211018174537002.png" />
|
||||
|
||||
<img src="https://npm.elemecdn.com/youthlql@1.0.6/spring-sourcecode-v1/chapter_09/image-20211018174827232.png" />
|
||||
<img src="https://upyunimg.imlql.cn/youthlql@1.0.6/spring-sourcecode-v1/chapter_09/image-20211018174827232.png" />
|
||||
|
||||
意料之中,启动应用的时候从init初始化那里调用过来了
|
||||
|
||||
@@ -808,7 +808,7 @@ public void afterPropertiesSet() {
|
||||
|
||||
### AbstractHandlerMethodMapping#initHandlerMethods()初始化HandlerMethods
|
||||
|
||||
<img src="https://npm.elemecdn.com/youthlql@1.0.6/spring-sourcecode-v1/chapter_09/image-20211018175412239.png" />
|
||||
<img src="https://upyunimg.imlql.cn/youthlql@1.0.6/spring-sourcecode-v1/chapter_09/image-20211018175412239.png" />
|
||||
|
||||
|
||||
|
||||
@@ -890,7 +890,7 @@ public void afterPropertiesSet() {
|
||||
|
||||
|
||||
|
||||
<img src="https://npm.elemecdn.com/youthlql@1.0.6/spring-sourcecode-v1/chapter_09/image-20211018183141571.png" />
|
||||
<img src="https://upyunimg.imlql.cn/youthlql@1.0.6/spring-sourcecode-v1/chapter_09/image-20211018183141571.png" />
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user