超全详解SpringMVC【富含面试题】

你的一键三连是我巨大的动力!

面试相关题也好,八股文等等也好,我并不建议你单纯的去死记硬背,因为这些题和八股文本身可能是食之无味的,很难让你持续学下去,而且也难以去举一反三,但当你带上一点点的思考和理解为什么,能够活用里面的思想和理念,那么相信你一定会有一个质的飞跃。就像你的一键三连,嘿嘿。

什么是SpringMVC?

曾几何时,听到这个问题的我一度想 xxxxx…因为之类问题好像在问你,who are you?
在这里插入图片描述
额…面试官,其实SpringMVC就是…

SpringMVC是一种基于MVC架构模式,请求驱动类型的轻量级Web框架,使用了MVC架构模式思想,将web层职责解耦,基于请求驱动指的就是使用请求-响应模型

回答了这段就可以了吗,想必面试官还不满足,因为这段你都把自己回答懵了

其实类似这种 【什么是XXX】的提问,可以引出很多问题

SpringMVC有什么用?

于是我回想了在有了SpringMVC的这段日子…

初入Java Web那个时候总是需要针对Servlet做很多繁琐的操作,但是有SpringMVC好像渐渐的忘掉了这段历史了呢…

所以可以说 SpringMVC是对Servlet的封装 于是提供了

  • 参数绑定
  • 数据回显
  • 上传文件

参数绑定

那时候的我们…

在Java Web时期,用到的Servlet如果要去获取参数,就需要用getParameter,而到了 SpringMVC这里, 我们只需要遵循:方法参数名与传递过来的name属性名相同 的规则。那么方法参数接收到的值就会传给Controller处理,这个过程就是参数绑定。

数据回显

想想Java Web那个时候都是用request.setAttribute值去回显到我们早期使用的JSP,到后面许多人用的thymeleaf模板引擎。而在我们SpringMVC中,我们是使用Model来把数据绑定request域对象中,以model.addAttribute()的方式。

上传文件

SpringMVC定义了MultipartFile接口,封装了上传文件需要使用Servlet处理各种繁琐操作的细节。

看到这里,最后,你还可以跟面试官说,嗯,SpringMVC很大程度上简化我们的开发,极大的提升了我们开发的效率。

仔细想想框架不都是干这事的吗?

问完了一个大的问题,通常面试官就会紧跟着来一个有深度的问题。

面试官:想必你看过SpringMVC源码,那么结合源码聊聊

SpringMVC的执行流程?

在这里插入图片描述

额…这…好吧

容我想想

对了,你有看到我的砖头吗

在这里插入图片描述

  1. 首先用户的请求会到达 DispatcherServlet 前端控制器处理
  2. DispacherServlet 接受到请求后,会根据 请求信息 HandlerMapping 处理器映射器
  3. HandleMapping根据用户url请求后,查找匹配该url的Handle,并返回一个执行链
  4. DispatcherServlet 再请求 处理器适配器HandlerAdapter 调用相应的Handler进行处理并返回ModelAndView给DispatcherServlet
  5. DispatcherServlet将请求 视图解析器 ViewResolver 解析,返回具体View
  6. DispatcherServlet 对 View 进行渲染视图,也将数据回显将模型到视图
  7. DispatcherServlet将页面响应给用户

放了张图在这了,要不面试官你自己慢慢看吧…

在这里插入图片描述

SpringMVC执行流程中的组件都是些什么?

DispatcherServlet 前端控制器

整个流程控制的中心,由它调用其它组件处理用户的请求,dispatcherServlet的存在降低了组件之间的耦合性。

回顾上面SpringMVC的请求处理流程,可以发现DispatcherServlet是站在C位的,不管处理什么,都是围绕DispatcherServlert来,而它也相当于MVC模式中的 C(Controller - 控制器)。

HandlerMapping 处理器映射器

HandlerMapping 负责根据用户请求url找到Handler处理器。方式:有配置、接口、注解等方式。

Handler 处理器

Handler对具体的用户请求进行处理。

HandlAdapter 处理器适配器

HandlerAdapter对处理器执行,通过适配器可以对更多类型的处理器进行执行。

ViewResolver 视图解析器

负责将处理结果生成View视图

View 视图
早期的JSP,现在的通过较流行的freemarkerView等等页面标签或页面模版技术将模型数据通过页面展示给用户

最后

我是一颗剽悍的种子,一个不想熬夜了的程序猿,谢谢这么可爱的你,还一键三连。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值