提纲:

🔥SpringMVC

  • 概念

  • 工作流程

  • 常用注释

🎈面试八股真题

  • 1、说说你对Spring MVC的理解

  • 2、SpringMVC常用的注解有哪些?

一、SpringMVC

1. 概念

  • 轻量级的 web 框架,实现了 MVC 设计模式,通过将 Model,View,Controller 三者解耦,将 web 开发划分成逻辑清晰的几部分,方便协同开发,提高效率

2.工作流程

  • DispatcherServlet 初始化

    • 1、调用 DispatcherServlet.init() 方法,执行 Spring web 容器的初始化方法

    • 2、初始化过程中,主要为 DispatcherServlet 加载组件

      • ①HandlerMappings:将请求资源的虚拟路径作为 Key,具体的 Controller 和方法打包为 HandlerMethod对象作为 Value,存储在 HandlerMappings 映射中

      • ②HandlerAdaptors:处理器适配器,用于调用 HandlerMethod 方法

      • ③HandlerExceptionResolvers:异常处理器,用于捕获并处理执行 HandlerMethod 时抛出的异常

      • ④ViewResolvers:视图解析器,将 ModelAndView 解析为视图并返回

      • ⑤MultipartFileResolvers:用于解析 Excel,PDF 等 MultipartFile 文件对象

    • 3、请求到达DispatcherServlet,根据请求资源的虚拟路径,从 HandlerMappings 中找到对应的方法,并且与对应的拦截器 Interceptors 形成执行链 Execute Chain

    • 4、首先调用 Execute Chain 中拦截器的 preHandler() 方法,顺序按 Order 从小到大

    • 5、使用 HandlerAdaptor 调用 Controller 中的方法

    • 6、若第五步没有发生异常,执行 postHandler() 方法,并将 ModelAndView 对象交给 ViewResolver 进行解析,并将视图返回给客户端

    • 7、若发生异常,调用 HandlerResolver 进行异常处理

    • 8、不论是否发生异常,都会执行拦截器链的 AfterCompletion() 方法

3.常用注解

  • @RestController:相当于 @Controller + @ResponseBody

  • @RequestMapping:用于标识 Controller 或方法对应的资源虚拟路径

  • @CrossRegion:实现了 W3C 标准的 CORS 跨域问题解决方案,即让服务器和浏览器通过 HTTP 头部信息进行沟通,自行决定请求是否成功,从而解决默认的同源策略问题

  • @PathVariable:用于获取 URL 中的参数

  • @RequestBody:用于获取请求体

二、面试八股真题🎈🎈🎈

1、说说你对Spring MVC的理解

  • 什么是MVC模式

    • MVC:MVC是一种设计模式

    • MVC的原理图:

  • 分析:

    • M-Model 模型(完成业务逻辑:有javaBean构成,service+dao+entity)

    • V-View 视图(做界面的展示 jsp,html……)

    • C-Controller 控制器(接收请求—>调用模型—>根据结果派发页面)

    • springMVC是一个MVC的开源框架,springMVC=struts2+spring,springMVC就相当于是Struts2加上sring的整合,但是这里有一个疑惑就是,springMVC和spring是什么样的关系呢?这个在百度百科上有一个很好的解释:意思是说,springMVC是spring的一个后续产品,其实就是spring在原有基础上,又提供了web应用的MVC模块,可以简单的把springM