spring mvc中的核心组件
(1)DispathcherServlet(前端控制器,处理请求的入入口,主控制器)
(2)HandlerMapping(映射对象,用于管理URL与对应contrlooer的映射关系)
(3)Interceptor(拦截器,实现请求响应的共性处理)
(4)Controller(后端控制器-handler, 负责处理请求的控制逻辑)
(5)ModelAndView:(封装了模型数据和视图标示)
(6)ViewResolver(视图解析器,解析对应的视图关系:前缀+view+后缀)
第一步:request 请求到达前端控制器(DispatcherServlet);
第二步:前端控制器请求处理器映射器(HandlerMapping)来查找处理器(Handler);可根据 xml 配置或注解进行查找;
第三步:处理器映射器返回一条执行链(HandlerExecutionChain)给前端控制器,执行链包括有拦截器(Interceptor)和处理器;
第四步:前端控制器调用处理器适配器(HandlerAdapter)去执行 Handler;
第五步:处理器适配器去执行 Handler;
第六步:Handler 执行完成给处理器适配器返回 ModelAndView(ModelAndView 是 SpringMVC 框架的一个底层对象,包括 Model 和 View);
第七步:处理器适配器向前端控制器返回 ModelAndView;
第八步:前端控制器请求视图解析器(View Resolver)去进行视图解析,根据逻辑视图名解析成真正的视图(View);
第九步:视图解析器向前端控制器返回 View;
第十步:前端控制器进行视图渲染,视图渲染是将模型数据(在ModelAndView对象中)填充到 request 域;
第十一步:返回给前端控制器;
第十二步:前端控制器向用户响应结果.
用户发送请求,请求到达DispatcherServlet控制器,DispatcherServlet控制器调用HanderMapping进行处理会通过映射返回一个URL,以及根据请求调用对应的Controller组件处理,执行Controller组件的业务处理,需要访问数据库,可以调用DAO等组件,Controller业务方法处理完毕后,会返回一个ModelAndView对象,该组件封装了模型数据和视图标识,然后Servlet主控制器调用ViewResoler组件,根据ModelAndView信息处理,生成视图响应信息,最后将信息响应给用户。