栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

SpringMVC组件及执行流程

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

SpringMVC组件及执行流程

组件 DispatcherServlet前端控制器

有Spring MVC提供
用户请求到达前端控制器,它就相当于mvc模式中的c(Controller,控制层),dispatcherServlet 是整个流程控制的中心,由它调用其它组件处理用户的请求,dispatcherServlet 的存在降低了组件之间的耦合性。

HandlerMapping处理器映射器

由Spring MVC提供
HandlerMapping负责根据用户请求找到 Handler,即处理器。SpringMVC 提供了不同的映射器实现不同的映射方式,例如:配置文件方式,实现接口方式,注解方式等。

HandlAdapter处理器适配器

作用是根据映射器找到的处理器 Handler 信息,按照特定的规则去执行相关的处理器Handler。
因为Handler会有各种各样的,所以需要适配器。HandlerAdapter负责Handler在执行的时候,会适配参数的绑定、转换器、该调用哪一个视图解析器等等。
其配置方式有两种,一种是基于 xml 的资源配置,也就是非注解的配置方式。另外一种就是基于 Annotation 注解的配置。其注解在代码中做上特殊标记,这些标记就可以编译、类加载、运行时被读取,然后去执行相应的处理。

适配器对应的处理器以及这些处理器的作用:

  1. AnnotationMethodHandlerAdapter: 主要是适配注解类处理器,注解类处理器就是我们经常使用的 @Controller 的这类处理器
  2. HttpRequestHandlerAdapter: 主要是适配静态资源处理器,静态资源处理器就是实现了 HttpRequestHandler 接口的处理器,这类处理器的作用是处理通过 SpringMVC 来访问的静态资源的请求
  3. SimpleControllerHandlerAdapter 是Controller处理适配器,适配实现了 Controller接口或Controller接口子类的处理器,比如我们经常自己写的 Controller来继承MultiActionController.
  4. SimpleServletHandlerAdapter: 是 Servlet处理适配器, 适配实现了 Servlet 接口或 Servlet 的子类的处理器,我们不仅可以在 web.xml 里面配置 Servlet,其实也可以用 SpringMVC 来配置 Servlet,不过这个适配器很少用到,而且 SpringMVC 默认的适配器没有他,默认的是前面的三种。
Handler处理器

开发中要编写的具体业务控制器(controller)。
由DispatcherServlet 把用户请求转发到 Handler。由Handler对具体的用户请求进行处理。

View Resolver视图解析器

View Resolver负责将处理结果生成View 视图,View Resolver首先根据逻辑视图名解析成物理视图名,即具体的页面地址*,再生成 View视图对象,最后对View进行渲染将处理结果通过页面展示给用户。

View视图渲染器

view对象会调用render将model中的数据全部存放到request中完成了请求的处理

Spring MVC执行流程

具体步骤

  1. 发起请求到前端控制器(DispatcherServlet)

  2. 前端控制器请求HandlerMapping查找 Handler

  3. 处理器映射器HandlerMapping向前端控制器返回Handler,HandlerMapping会把请求映射为HandlerExecutionChain对象(包含一个Handler处理器(页面控制器)对象,多个HandlerInterceptor拦截器对象),通过这种策略模式,很容易添加新的映射策略

  4. 前端控制器调用处理器适配器去执行Handler

  5. 处理器适配器HandlerAdapter将会根据适配的结果去执行Handler

  6. Handler执行完成给适配器返回ModelAndView

  7. 处理器适配器向前端控制器返回ModelAndView (ModelAndView是springmvc框架的一个底层对象,包括 Model和view)8 。前端控制器请求视图解析器去进行视图解析 (根据逻辑视图名解析成真正的视图(jsp)),通过这种策略很容易更换其他视图技术,只需要更改视图解析器即可

  8. 视图解析器向前端控制器返回View

  9. 前端控制器进行视图渲染 (将在ModelAndView对象中的数据)填充到request域)

  10. 前端控制器向用户响应结果

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/327753.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号