SpringMVC的执行流程
SpringMVC的执行流程
1、浏览器发送请求,被DispatcherServlet拦截
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进行解析,并进行展示
发表回复