Spring MVC——核心思想及流程解析

Spring MVC思想

SpringMVC在项目中拦截用户请求,它的核心Servlet即DispatcherServlet承担中介或是前台这样的职责,将用户请求通过HandlerMapping去匹配Controller(也叫Handler),Controller就是具体对应请求所执行的操作。
SpringMVC以一个全局servlet作为核心处理器,自成一个网址映射,拦截器体系,相当于前后台交互模式。
目的:是搭建一个更健全,高效的前后台交互框架。主要功能是参数自动映射vo实例和数据校验,在处理完业务后隐式或显示储存数据到作用域,在返回数据时能对响应方式快速设定。

Spring MVC流程解析

Spring MVC整体流程图
在这里插入图片描述流程简述
首先用户发送请求到DispatcherServlet,然后DispacherServlet将请求传给HandleMapping进行映射,返回Handle的信息去寻找Handle,然后HandleAdapter启动Handle,Handle进行逻辑处理,返回ModelAndView到DispacherServlet,随后DispacherServlet再将ModelAndView发送给ViewResolver进行视图解析,最终将View视图返回给DispacherServlet,DispacherServlet再返回给用户

前端控制器(DispatcherServlet)
中央处理器,负责对各部分进行任务分发。
用户请求到达前端控制器,它相当于MVC模式中的C(Controller)DispatcherServlet是整个流程控制的中心,由它调用其它组件处理用户的请求,DispatcherServlet的存在降低了组件之间的耦合性。
作用:作为接受请求,相应结果,相当于转发器,中央处理器,减少其他组件之间的耦合度。

处理器映射器(HandlerMapping)
接收到前端控制器发送的url后,对url进行匹配,返回给前端控制器一个处理器执行链(HandlerExecuteChain)
HandlerMapping负责根据用户请求找到Handler(即:处理器),SpringMVC提供了不同的映射器实现实现不同的映射方式,例如:配置文件方式、实现接口方式、注解方式等。
作用:根据请求的Url 查找Handler。

处理器适配器(HandlerAdaptor)
接收到前端控制器要寻找的Handler,选择对应的Handler进行执行,执行后返回ModelAndView给前端控制器。
通过HandlerAdapter对处理器进行执行,这是适配器模式的应用,通过扩展适配器可以对更多类型的处理器进行执行。
作用:按照特定的规则(HandlerAdapter要求的规则)去执行注入参数,启动Handler。

处理器(Handler)(需要程序员编写)
Handler是继DispatcherServlet前端控制器的后端控制器,在DispatcherServlet的控制下,Handler对具体的用户请求进行处理。
由于Handler设计到具体的用户业务请求,所以一般情况需要程序员根据业务需求开发Handler。
作用:执行处理器适配器发送的任务,返回ModelAndView给处理器适配器。
注意:编写Handler时按照HandlerAdpter的要求去做,这样才可以去正确执行Handler。
ModelAndView: Handler处理逻辑后返回的封装类,Model相当于返回的数据对象,json串等等,View相当于返回的jsp/html等

视图解析器(Viewresolver)
接收前端控制器发送来的逻辑视图(ModelAndView),转换为真正的视图,返回给前端控制器供其渲染。
ViewResolver负责将处理结果生成View视图,ViewResolver首先根据逻辑视图名解析成物理视图名,即具体的页面地址,再生成View视图对象,最后对View进行渲染将处理结果通过页面的展示给用户。SpringMVC框架提供了很多View视图类型,包括:JSTLView、freemarkerView、pdfView等等.
作用:进行视图解析,根据逻辑视图名解析成真正的视图(view),例如拼写前缀的路径,后缀的类型。

视图(View)(需要程序员编写)
经过视图解析器生成的视图(如JSP、Excel、PDF等等),经前端控制器渲染后发送到请求方。
View是一个接口,实现类支持不同的View类型(jsp、freemarker、pdf)
一般情况下需要通过页面标签或者页面模板技术将模型数据通过页面展示给用户,需要由程序员根据业务需求开发具体的页面。

流程解释

1.用户发送请求至中央控制器DispatcherServlet
2.中央控制器DispatcherServlet收到请求后发送Url调用处理器映射器HandlerMapping
3.处理器映射器HandlerMapping根据请求的Url找到具体的处理器Handler,生成处理器对象Handler及处理器拦截器HandlerIntercepter(如果有则生成)一并返回给中央控制器DispatcherServlet
4.中央控制器DispatcherServlet通过处理器适配器HandlerAdapter使用反射内省进行注入参数,并且调用启动处理器Handler
5.执行启动处理器Handler(Controller,也叫后端控制器)
6.处理器Handler执行完后返回ModelAndView
7.处理器适配器HandlerAdapter将处理器Handler执行返回的结果ModelAndView返回给中央处理器DispatcherServlet
8.中央处理器DispatcherServletModelAndView传给视图解析器ViewResolver,进行前缀拼写路径(例如/Web/js/),后缀拼写类型(例如.jsp或者.html)。
9.视图解析器ViewResolver解析后返回具体的视图View
10.中央处理器DispatcherServlet对视图View进行渲染视图(即:将模型数据填充至视图中)
11.中央处理器DispatcherServlet响应用户,完成整个操作流程。

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值