文章参考♥Spring框架知识体系详解♥ | Java 全栈知识体系 推荐学习
-
接收请求:
-
当HTTP请求到达Spring Boot应用时,嵌入式的Web服务器(如Tomcat、Jetty、Undertow)会接收这个请求,并将其传递给Spring应用。
-
-
请求调度:
-
DispatcherServlet: Spring MVC的核心组件是
DispatcherServlet
。它作为前端控制器(Front Controller),负责接收所有的HTTP请求,并根据请求的URL将其分发到相应的处理器(Controller)。 -
HandlerMapping:
DispatcherServlet
通过HandlerMapping
来确定哪个控制器(Controller)方法处理这个请求。
-
-
请求映射:
-
Controller: 根据
@RequestMapping
、@GetMapping
、@PostMapping
等注解,HandlerMapping
会找到匹配的Controller
类和方法。 -
HandlerAdapter:
DispatcherServlet
使用HandlerAdapter
来调用找到的控制器方法。
-
-
安全处理 (如果配置了Spring Security):
-
Security Filter Chain: 在请求到达
DispatcherServlet
之前,Spring Security的FilterChain
会对请求进行处理。它会根据配置进行身份验证和授权检查。 -
SecurityContext: 在处理请求时,Spring Security会创建
SecurityContext
来保存与当前用户相关的信息,如身份和权限。
-
-
业务逻辑处理:
-
Controller Method: 控制器方法会处理业务逻辑并返回结果。方法返回的结果通常是一个视图名(对于视图解析)或者直接的数据(对于RESTful服务)。
-
-
视图解析:
-
ViewResolver: 如果控制器方法返回的是视图名,
DispatcherServlet
会使用ViewResolver
来解析视图,生成最终的HTML或其他格式的响应内容。 -
Template Engines: 在返回视图时,模板引擎(如Thymeleaf、FreeMarker等)会被用来渲染视图模板。
-
-
响应返回:
-
Response: 处理完毕后,最终生成的响应会被发送回客户端。这个响应可能是一个渲染的HTML页面,JSON数据,或其他格式的内容。
-
-
过滤器 (可选):
-
Filters: 如果配置了自定义的
Filter
,它们可以在请求进入DispatcherServlet
之前和响应离开DispatcherServlet
之后执行,进行额外的处理,如日志记录、请求修改等。
-