博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SpringMVC的工作流程。(java后台开发面试必问)
阅读量:4092 次
发布时间:2019-05-25

本文共 1704 字,大约阅读时间需要 5 分钟。

(Notice:以下所有经验也是我根据网上的经验整理的,如有侵权可以联系我删除,欢迎交流和沟通,Wx:IT_Ezra,QQ 654303408。 有问题讨论也可联系我。)

(PS:众所周知,SpringMVC是目前比较主流的Web层的框架,基本上是现在面试java后台的同学们面试必问的知识点,说难不难,使用起来不难,因为封装得特别好,也比较轻量级,并且加上现在的RESTful风格的接口,使得使用起来十分方便,但是如果想更加强化这方面的内容的同学可以去了解一下SpringMVC的源码来进行学习,我也得此做了一点点整理和分享。)

一、SpringMVC简介

     SpringMVC是一种基于Spring实现了Web MVC设计模式的请求驱动类型的轻量级Web框架,使用了MVC架构模式的思想,将web层进行职责解耦,并管理应用所需对象的生命周期,为简化日常开发,提供了很大便利。

  SpringMVC提供了总开关——前端控制器(DispatcherServlet);请求处理映射器(Handler Mapping)和处理适配器(Handler Adapter),视图解析器(View Resolver)进行视图管理;动作处理器Controller接口(包含ModelAndView,以及处理请求响应对象request和response),配置灵活,支持文件上传,数据简单转化等强大功能在这里插入图片描述

  • (1)客户端通过url发送请求

  • (2-3)核心控制器Dispatcher Servlet接收到请求,通过系统或自定义的映射器配置找到对应的handler,并将url映射的控制器controller返回给核心控制器。

  • (4)通过核心控制器找到系统或默认的适配器

  • (5-7)由找到的适配器,调用实现对应接口的处理器,并将结果返回给适配器,结果中包含数据模型和视图对象,再由适配器返回给核心控制器

  • (8-9)核心控制器将获取的数据和视图结合的对象传递给视图解析器,获取解析得到的结果,并由视图解析器响应给核心控制器

  • (10)核心控制器将结果返回给客户端

三、适配器作用

   SpringMVC涉及的映射器,视图解析器的作用不难理解,映射器负责将前端请求的url映射到配置的处理器,视图解析器将最终的结果进行解析,但中间为什么要经过一层适配器呢,为什么不经映射器找到controller后直接执行返回呢?

   那是因为SpringMVC为业务处理器提供了多种接口实现(例如实现了Controller接口),而适配器就是用来根据处理器实现了什么接口,最终选择与已经注册好的不同类型的Handler Adapter进行匹配,并最终执行,例如,SimpleControllerHandlerAdapter是支持实现了controller接口的控制器,如果自己写的控制器实现了controller接口,那么SimpleControllerHandlerAdapter就会去执行自己写的控制器中的具体方法来完成请求。

总的来说:整个流程就是:

   首先根据请求的路径找到HandlerMethod(带有Method反射属性,也就是对应Controller中的方法),然后匹配路径对应的拦截器,有了HandlerMethod和拦截器构造个HandlerExecutionChain对象。HandlerExecutionChain对象的获取是通过HandlerMapping接口提供的方法中得到。有了HandlerExecutionChain之后,通过HandlerAdapter对象进行处理得到ModelAndView对象,HandlerMethod内部handle的时候,使用各种HandlerMethodArgumentResolver实现类处理HandlerMethod的参数,使用各种HandlerMethodReturnValueHandler实现类处理返回值。 最终返回值被处理成ModelAndView对象,这期间发生的异常会被HandlerExceptionResolver接口实现类进行处理。

感谢[

]()

转载地址:http://wtcii.baihongyu.com/

你可能感兴趣的文章
千万级实时数据处理系统是如何设计的? (免费领取源码)
查看>>
为什么字节跳动、腾讯、阿里都在用Python??
查看>>
阿里副总裁人设“翻车”:30 岁成 AI 顶尖科学家,但我很懒
查看>>
小白想靠编程赚钱,这个野路子你一定要知道
查看>>
如何摧毁一个 Python 工程师?
查看>>
程序员离职后收到原公司 2400 元,被告违反竞业协议赔 18 万
查看>>
科大讯飞半年报:营收和净利润双提升,AI市场仍有机会
查看>>
别再被 Python 洗脑了!!
查看>>
数据分析行业十年专家:“方法用对,你就是那10%的精英”(推荐阅读)
查看>>
为什么我坚持学Python??
查看>>
警惕!这个领域程序员的钱,太好赚了!
查看>>
BAT警示:没试过这个方法就别说会数据分析!!
查看>>
深耕数据分析十余载:“我的破局之术”
查看>>
前景好,高薪争抢的数据行业,你还有机会吗?
查看>>
学Python还是Java?这还用问,当然选它!
查看>>
一条垃圾SQL,把 64 核 CPU 快跑崩了!
查看>>
10个 Python 工程师,9个不合格!!
查看>>
腾讯微博即将关停,十年了,你用过吗?
查看>>
十年大数据专家:“用对方法,你才是那10%的精英”
查看>>
刚写完排序算法,就被开除了…
查看>>