springmvc 流程图
graph TD
用户 -->|1.http 请求| DispatcherServlet
DispatcherServlet -->|2.请求映射器| HandlerMapping处理器映射器
HandlerMapping处理器映射器 -->|返回映射器执行链| DispatcherServlet
DispatcherServlet -->|3.调用处理器适配器执行handler| HandlerAdapter处理器适配器
HandlerAdapter处理器适配器 -->|返回ModelAndView| DispatcherServlet
HandlerAdapter处理器适配器 -->|4.通过HandlerAdapter来调用Handler| Handler处理器-后端处理方法
Handler处理器-后端处理方法 --> HandlerAdapter处理器适配器
DispatcherServlet -->|5.请求视图解析器| ViewResolver视图解析器
ViewResolver视图解析器 -->|返回view| DispatcherServlet
DispatcherServlet -->|6.视图渲染| View解析视图jspfreemark
View解析视图jspfreemark -->|7.http 响应| 用户
详细流程如下:
1.客户端发送请求:客户端(如浏览器)向服务器发送一个HTTP请求,请求访问某个URL对应的资源。
2.DispatcherServlet接收请求:Spring MVC中的核心控制器DispatcherServlet会拦截到这个请求。它就像一个前端控制器,负责接收所有的请求,并将请求分发给合适的处理器进行处理。
3.查找HandlerMapping:DispatcherServlet通过HandlerMapping(处理器映射器)查找与该请求URL匹配的Handler(处理器,通常是一个Controller类中的方法)。HandlerMapping会根据配置(如@RequestMapping注解等)找到对应的Handler。例如,配置了@RequestMapping("/user/list")的方法,当请求URL为/user/list时,HandlerMapping就能找到这个对应的方法。
4.获取HandlerAdapter:找到Handler后,DispatcherServlet通过HandlerAdapter(处理器适配器)来调用Handler。不同类型的Handler(如基于注解的Controller、实现特定接口的Controller等)需要不同的HandlerAdapter来进行适配调用。HandlerAdapter负责调用Handler方法,并将请求参数传递给Handler。
5.Handler处理请求:Handler(即Controller中的方法)处理请求,执行相应的业务逻辑。这可能包括调用服务层方法进行业务处理,访问数据库获取数据等操作。
6.返回ModelAndView:Handler处理完请求后,会返回一个ModelAndView对象。Model中包含了要返回给视图的数据,View则指定了使用哪个视图来渲染数据(如JSP、Thymeleaf模板等)。
7.ViewResolver解析视图:DispatcherServlet通过ViewResolver(视图解析器)将ModelAndView中的View逻辑名称解析为实际的视图对象。例如,将逻辑视图名"user/list"解析为对应的JSP文件路径"/WEB - INF/views/user/list.jsp"。
8.视图渲染:得到实际的视图对象后,视图对象将Model中的数据渲染到页面上,生成最终的HTML响应。
9.返回响应:将渲染好的HTML响应返回给客户端,客户端浏览器接收到响应后进行展示。