【 面试官】那Spring MVC工作流程你说一说?
- 面试官:Spring MVC说说你的理解?
- 面试官:那Spring MVC工作流程你说一说?
- 面试官:有真的实践过吗?
- 面试官:Spring MVC常见注解有了解过哪些?
大家好,我是南哥。
一个Java学习与进阶的领路人,跟着南哥我们一起Java成长。
文章目录
- SpringMVC概况
- 如何理解SpringMVC
- SpringMVC技术要点
- SpringMVC工作流程
- SpringMVC搭配Tomcat容器
- SpringMVC常见注解
1. Spring MVC概况
1.1 如何理解Spring MVC
面试官:Spring MVC说说你的理解?
大家都知道Spring MVC很强大,南哥问大家一个问题,Spring MVC为什么会出现?一项技术的出现必定是为了解决旧技术考虑不全所积累的软件熵。《程序员修炼之道》在软件的熵
一节中对熵的解释很有冲击力,作者是这么说的,大家有没什么触动。
虽然软件开发不受绝大多数物理法则的约束,但我们无法躲避来自熵的增加的重击。熵是一个物理学术语,它定义了一个系统的“无序”总量。不幸的是,热力学法则决定了宇宙中的熵会趋向最大化。当软件中的无序化增加时,程序员会说“软件在腐烂”。有些人可能会用更乐观的术语来称呼它,即“技术债”,潜台词是说他们总有一天会偿还的——恐怕不会还了。
在没有出现Spring MVC之前,老一代的开发者会在Servlet
中编写业务逻辑和控制代码,甚至属于后端的业务逻辑也会耦合在了jSP
页面。在当时互联网不流行,业务都比较简单的年代,这样写问题不会太大,但随着时间的累积、互联网的爆发,业务复杂度也爆发式上升,这叫新来的实习生程序员怎么上手呢。缺乏统一和清晰的架构模式,会导致应用程序的可扩展性和可维护性降低。
我们先不讲Spring MVC,把MVC拆解出来。MVC(Model View Controller)实践上是一种软件架构思想,这个思想指导把应用程序分为了三个模块,用于编写业务逻辑的模型、用于数据呈现的视图、用于协调前两者的控制器。
在我们Java程序员第一次接触企业框架时,我们最开始一般用SSM来练练手。如果是SSM框架,充当Model
的是编写业务逻辑Java类,充当View
的是JSP页面,而充当Controller
的则是Servlet。总的来说,MVC明确划分了各个模块的责任,不是你负责的东西不允许越线,这明显维护起来好看多了。
好久好久之前南哥练手的第一个项目是坦克大战,和现在一般企业业务把一个Java对象看出是需求的抽象不同,我当时的坦克大战是把一个Java对象看成是一只坦克的载体。大家第一个Java练手项目有什么故事吗?
2. Spring MVC技术要点
2.1 Spring MVC工作流程
面试官:那Spring MVC工作流程你说一说?
Spring MVC工作流程涉及五大组件,大家先预览一遍:DispatcherServlet、HandleMapping、Controller、ModelAndView、ViewResolver。
第一步用户触发浏览器时将请求发送给前端控制器DispatcherServlet,DispatcherServlet就相当于上文MVC架构的C,Spring源码对DispatcherServlet解释为HTTP请求处理程序/ 控制器的中央调度程序
。有了中央调度程序大脑,下一步就可以联调其他组件了。
// DispatcherServlet类
package org.springframework.web.servlet;
public class DispatcherServlet extends FrameworkServlet { }
第二步,DispatcherServlet调用处理器映射器HandleMapping,根据用户请求的URL找到对应的业务控制器Contorller。
// HandlerMapping类
package org.springframework.web.reactive;
public interface HandlerMapping { }
第三步,DispatcherServlet请求处理器适配器HandlerAdapter执行Controller,获得业务结后返回一个模型视图对象ModelAndView给到DispatcherServlet。
剩余60%内容,订阅专栏后可继续查看/也可单篇购买
👉以面试官面试的形式,涵盖了你怒怼大厂面试官、拿下大厂面试所需掌握的核心知识、面试重点! 👉相信一定对你顺利通关面试、拿到理想Offer有所帮助! 👉花费大量精力去制作本专栏,创作不易,各位的支持就是我创作的最大动力!