SpringMVC的执行流程

本文最后更新于:5 天前

SpringMVC的执行流程

1、浏览器发送请求,被DispaherServlet拦截

  • DispatcherServlet是SpringMVC最核心的类,DispatcherServlet通过url-pattern绑定了根路径/(对所有地址进行映射),所以向当前工程发送的所有请求,都要通过DispatcherServlet进行处理

2、DispatcheServlet接到请求后,通过HandlerMapping接口及其实现类来寻找URL映射

  • HandlerMapping会扫描当前程序中所有的GetMapping/PostMapping注解,然后确认是哪个接口的哪个方法对应URL中的访问地址,当找到对应的接口后,就会自动到IOC容器中找到启动时已经创建好的Controller类的对象,然后使用对象对应的接口方法处理请求

3、当前的Controller是不知道如何解析“请求”和“响应”的,还要再依赖HanderAdapter适配器接口,处理请求与响应中的数据

  • HanderAdapter利用HttpMessageConverter对请求和响应进行处理和设置,如对url路径变量、请求参数进行解析

4、当Controller依靠HttpMessageConveter方法处理、解析请求以后,Controller根据解析结果执行代码

5、Controller返回一个ModelAndView(模型与视图,表示要进行页面的显示和数据的绑定)对象

6、DispatcherServlet接收到返回的ModelAndVeiw对象后,会通过ViewResovler选择视图

  • 如果ModelAndVeiw中返回的是一个ftl freemarker脚本,DispacherServlet会选择FreemarkerViewResolver 进行处理;如果是一个jsp,就会选择jsp对应的ViewResolver

7、被选择的视图解析器(例如FreemarkerViewResolver)会将我们存放在ModelAndView中的Model(数据),结合Freemarker的模板文件,生成HTML

8、生成的HTML会随着响应,发回到浏览器,浏览器再对HTML进行解析,并进行展示


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!