Spring MVC的请求处理流程
请求处理流程
SpringMVC通过前端控制器(DispatcherServlet)拦截并处理用户请求
① 前端发送请求被前端控制器DispatcherServlet拦截
② 前端控制器调用处理器映射器HandlerMapping对请求URL进行解析,解析之 后返回调用给前端控制器
③ 前端控制器调用处理器适配器处理调用链
④ 处理器适配器基于反射通过适配器设计模式完成处理器(控制器Controller) 的调用处理用户请求
⑤ 处理器适配器将控制器返回的视图和数据信息封装整ModelAndView响应给前 端控制器
⑥ 前端控制器调用视图解析器ViewResolver对ModelAndView进行解析,将 解析结果(视图资源和数据)响应给亲段控制器
⑦ 前端控制器调用视图view组件将数据进行渲染,将渲染结果(静态视图)响应 给前端控制器
⑧ 前端控制器响应用户请求
SpringMVC的核心组件
- DispatcherServlet 前端控制器、总控制器
- 由SpringMVC提供,无需工程师开发
- 作用:接收请,协同各组件工作、响应请求
- HandlerMapping 处理器映射器
- 也是由SpringMVC提供
- 作用:负责根据用户请求的URL找到对应的Handler(Controller)
- 可自定义配置SpringMVC提供了多个处理器映射器的实现,可以根据需要机型配置
- HandlerAdapter 处理器适配器
- SpringMVC提供
- 作用:按照处理器映射器解析的用户请求的调用链,通过适配器模式完成Handler(controller)的调用
- Handler 处理器/控制器
- 由工程师根据业务需求进行开发
- 作用:处理请求
- ModelAndView 视图模型
- 作用:用于封装处理器返回的数据以及响应的视图
- ModelAndView = model + view
- ViewResolver 视图解析器
- 对ModelAndVIew进行解析 /tips.jsp
- 可配置 SpringMVC 提供了多个视图解析器的实现,可以根据需要进行配置
- View 视图
- 作用:完成数据渲染
处理器映射器
不同的处理器映射器对URL处理的方式也不相同,使用对应的处理器映射器之后,我们的前端请求规则也需要发生相应的变化
- Spring MVC 提供的处理器映射器:
- BeanNameUrlHandlerMapping 根据控制器的Id(类名)访问控制器
- SimpleUrlHandlerMapping 根据控制器配置的URL访问(默认)
配置处理器映射器:
-
在SpringMVC的配置文件中通过bean标签声明处理器映射器
-
配置BeanNameUrlHandlerMapping(相当于根据Controller名字访问)
-
<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"></bean>
-
配置SimpleUrlHandlerMapping(相当于根据路径访问)
-
<bean class