SpringMVC的执行流程
【摘要】 文章目录前言SpringMVC的大致流程SpringMVC的执行过程及组件
前言
本篇博客是对SpringMVC中执行流程的分析,若文章中出现相关问题,请指出!
所有博客文件目录索引:博客目录索引(持续更新)
SpringMVC的大致流程
SpringMVC中的对象实际上就是在Spring的容器中,随着Spring容器的加载启动而进行。
在最后不走视图解析器时返回自定义内容,一般都是字符串。若是
@[toc]
前言
本篇博客是对SpringMVC中执行流程的分析,若文章中出现相关问题,请指出!
所有博客文件目录索引:博客目录索引(持续更新)
SpringMVC的大致流程
SpringMVC
中的对象实际上就是在Spring
的容器中,随着Spring容器的加载启动而进行。
在最后不走视图解析器时返回自定义内容,一般都是字符串。若是返回对象的话通过java序列化不太妥当(使用了java序列化想要反序列化还是需要java程序),所以返回对象时一般转换为json
,如果使用了转换器,若是context-type=text/html
就是浏览器接收到的就是json
字符串,若是context-type=application/json
就是json
对象。
SpringMVC的执行过程及组件
入口是Servlet
,将web层进行职责解耦。
清晰的角色划分:控制器(controller)、验证器(validator)、 命令对象(command object)、表单对象(formobject)、模型对象(model object)、 Servlet分发器(DispatcherServlet)、处理器映射(handler mapping)、视图解析器(view resolver)等。每一个角色都可以由一个专门的对象来实现。
具体说明:
Handler
(处理器):继DispatcherServlet前端控制器的后端控制器,在DispatcherServlet的控制下Handler对具体的用户请求进行处理,由于Handler涉及到具体的用户业务请求,所以一般情况需要程序员根据业务需求开发Handler。(可以理解为就是我们写的Controller
)。View
(视图):通过页面标签技术将模型数据通过页面展现给用户,一般指的是程序员根据业务需求开发具体的页面。我们最常用的就是jsp(本质就是servlet程序),其次就是thymeleaf模板引擎。DispatcherServlet
(中央控制器):用户请求到达前端控制器,也就是MVC中的C,是整个流程控制的中心,由它来调用其他组件处理用户的请求,该存在降低了组件之间的耦合性。(其是核心也就是个Servlet
,可以简单理解为门卫传达室一个请求进来先来到传达室,之后调用不同的人来处理问题)HandlerMapping
(处理器映射器):该映射器负责根据用户请求url找到Handler
即处理器,在springmvc中提供了不同的映射器实现不同的映射方式(xml配置文件、实现接口方式、注解方式)。其返回的是一个处理器链,其中包含了filter以及handler(每个请求对应的)。- 实际上就是个map,放了一堆数据,key是url,value就是handler(你写的controller),一个请求来了调用下map.getUrl(url)就知道哪个类处理这个请求了。实际上会将这个url对应的拦截器、处理器都拿到。
HandlAdapter
(处理器适配器):该适配器对处理器handler进行执行,这是适配器模式的应用,通过扩展适配器可以对更多类型的处理器执行。- 通过调用相应的方法,生成最终得到的
ModelAndView
。
- 通过调用相应的方法,生成最终得到的
ViewResolver
(视图解析器):负责将处理结果生成view视图,ViewResolver首先根据逻辑视图名解析成物理视图名即具体的页面地址,再生成View视图对象,最后对View进行渲染将处理结果通过页面展示给用户。- 实际上就是来解析
modelAndView
的,有个常用最简单的功能就是拼接字符串,给你加个前缀后缀更加方便,并且解析很多类型的视图。
- 实际上就是来解析
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)