DispatcherServlet 前端控制器 HandlerMapping 映射处理器 Controller: 处理器 ModelAndView: (处理结果和视图名) ViewResolver 视图解析器。 执行流程 1.用户请求发送给前端控制器(DispatcherServlet),前端控制器收到请求路径,但不知道请求的是那个Control中的哪个方法 2.DispatcherServlet找到处理器映射器(HandlerMapping),实际上处理器映射器存放了Map<String,Handler>,通过请求的url地址找到对应的处理器及自定义的拦截器等 3.前端控制器依然不能处理这个业务请求,它这时做的还有另外一件事情,因为返回Handler,它也不知道这个Handler是什么类型,因为在spring mvc中Handler除了可以是注解形式的之外,其实还可以是非注解形式的(非注解形式我们一般不用),前端控制器并不知道这个Handler到底是什么类型的,那就没办法执行它,那总得找个东西执行,这时它就会把这个事交给另外一个组件来处理,这个组件就叫处理器适配器,这个处理器适配器就是来适配不同类型的Handler。它就会根据你不同类型的Handler来选择不同类型的适配器来执行它。 4.处理器适配器拿到处理器,执行。就是执行对应的Control层被@RequestMapping注解标注的方法,执行成功返回ModelAndView 5.通过对应的视图解析器(如jsp视图解析器,Thymeleaf视图解析器)请求解析视图找到这个视图解析器,它来把这个视图解析,解析完了之后它会返回一个View对象。 6.最后我们再调用这个视图解析器的渲染视图这个过程,渲染视图这个过程其实就是对于我们的jsp来说,就是把这个数据渲染成html响应给页面。