SpringMVC是Spring的一部分,提供了前台展示相关内容,SpringMVC的底层需要用到Servlet;
MVC是一种设计模式:
- M(model):数据,bean、dao;
- V(View):页面,JSP;
- C(Controller):根据请求不同,获取不同的model,返回不同的view;
用户请求数据到返回的大体流程:
SpringMVC运行的原理:
SpringMVC的具体执行流程:
- 用户发起请求,由前端控制器(DispatcherServlet)接收;
- 前端控制器请求处理器映射器(HandlerMapping)查询Handler(通过注解或者配置实现);
- 处理器映射器向前端控制器返回处理器执行链对象(HandlerExecutionChain);
- 由前端控制器请求适配器执行Handler;
- 由处理器执行Handler;
- 处理器向处理器适配器返回ModelAndView对象,ModelAndView是SpringMVC底层提供的一个对象,返回包括一个Model数据和View视图逻辑名;
- 处理器适配器向前端控制器返回ModelAndView对象;
- 由前端控制器请求视图解析器ViewResolver解析视图;
- 由视图解析器向前端控制器返回View对象;
- 由前端控制器执行渲染视图;
- 前端控制器向用户返回结果;
组件说明:
一、前端控制器 DispatcherServlet
作为SpringMVC的入口函数,接收用户的请求,响应结果,相当于转发器、中央处理器,是整个流程控制的核心,由它调用其他组件完成用户请求,它的存在降低了组件之间的耦合度;
二、处理器映射器 HandlerMapping
根据用户请求的URL,查找Handler,即处理器(Controller),Spring提供了不同的处理器映射器实现不同映射方式;
三、处理器适配器 HandlerAdapter
按照特定的规则取执行Handler;
四、处理器 Handler
按照处理器适配器的规则实现,其才能找到处理器,才能真正执行Handler;这个涉及到具体的业务请求,需要开发人员手动实现;
五、视图解析器 ViewResolver
进行视图解析,根据视图逻辑名解析成物理视图名即具体页面地址,再生成view的对象,最后对View对象进行渲染处理;
六、视图 View
View是一个接口,实现类支持不同的View类型(JSP、PDF),SpringMVC提供了很多View视图类型,包括jstView(JSP相关)、FreemakerView、PDFView等,这个需要开发人员自己实现;
注意:处理器 Handler、视图 View这两个需要开发人员手动实现;