当前位置: 首页 > news >正文

【JavaEE进阶】 初识Spring Web MVC

文章目录

  • 🌴什么是Spring Web MVC?
    • 🚩什么是Servlet呢?
  • 🎋MVC 定义
    • 🚩再理解Spring MVC
  • 🍀如何学习Spring MVC呢?
  • ⭕总结

🌴什么是Spring Web MVC?

Spring Web MVC 是基于 Servlet API 构建的原始 Web 框架,从⼀开始就包含在Spring框架中。它的正式名称“Spring Web MVC”来⾃其源模块的名称(Spring-webmvc),但它通常被称为)Spring MVC).

🚩什么是Servlet呢?

Servlet是⼀种实现动态⻚⾯的技术.准确来讲Servlet是⼀套Java Web 开发的规范,或者说是⼀套Java Web 开发的技术标准.

只有规范并不能做任何事情,必须要有⼈去实现它.所谓实现Servlet规范,就是真正编写代码去实现Servlet规范提到的各种功能,包括类、⽅法、属性等.

Servlet规范是开放的,除了Sun公司,其它公司也可以实现Servlet规范,⽬前常⻅的实现了Servlet规范的产品包括Tomcat、Weblogic、Jetty、Jboss、WebSphere等,它们都被称为)Servlet容器".

Servlet容器⽤来管理程序员编写的Servlet类

从上述定义我们可以得出⼀个信息:Spring Web MVC是⼀个Web框架,简称Spring MVC

当我们理解了什么是Spring Web MVC,就不得不理解一下MVC。

🎋MVC 定义

MVC 是 Model View Controller 的缩写,它是软件⼯程中的⼀种软件架构设计模式,它把软件系统分为模型、视图和控制器三个基本部分。如下图所示
在这里插入图片描述

  • View(视图):指在应⽤程序中专⻔⽤来与浏览器进⾏交互,展⽰数据的资源.

  • Model(模型):是应⽤程序的主体部分,⽤来处理程序中数据逻辑的部分.

  • Controller(控制器) :可以理解为⼀个分发器,⽤来决定对于视图发来的请求,需要⽤哪⼀个模型来处理,以及处理完后需要跳回到哪⼀个视图。即⽤来连接视图和模型

这个过程我们可以想象成去饭店吃饭

客⼾进店之后,服务员来接待客⼾点餐,客⼾点完餐之后,把客⼾菜单交给前厅,前厅根据客⼾菜单给后厨下达命令.后厨负责做饭,做完之后,再根据菜单告诉服务员,这是X号餐桌客⼈的饭.

在这个过程中

  • 服务员就是View(视图):负责接待客⼾,帮助客⼾点餐,以及给顾客端饭
  • 前厅就是Controller(控制器):根据⽤⼾的点餐情况,来选择给哪个后厨下达命令.
  • 后厨就是Model(模型):根据前厅的要求来完成客⼾的⽤餐需求

🚩再理解Spring MVC

当我们知道知道了MVC后,就能更好的理解Spring MVC了。

Spring MVC 其实就是对MVC思想的具体实现.除此之外,Spring MVC还是⼀个Web框架
.
总结来说,Spring MVC是⼀个实现了MVC模式的Web框架.

那我们需要怎么样创建Spring MVC项目呢?其实博主在SpringBoot的创建与简单使用已经演示过了,就是在添加依赖的时候。如下图所示:
在这里插入图片描述

这时候可能有些人就懵了,前⾯创建的不是SpringBoot项⽬吗?怎么⼜变成了SpringMVC项⽬?他们之间到底有着什么样的关系?

SpringBoot是2014年发布的,Spring是2004年发布的,在2014年发布之前,就不能⽤Spring实现MVC架构吗?答案显然不是这样的.

Spring Boot只是实现Spring MVC的其中⼀种⽅式⽽已.

Spring Boot 可以添加很多依赖,借助这些依赖实现不同的能.Spring Boot 通过添加Spring WebMVC框架, 来实现web功能

⽐如:厨房可以⽤来做饭,但真实实现做饭功能的是⽕以及各种做饭相关的⻝材和⼯具.
厨房就好⽐是SpringBoot,厨房可以装柜⼦,实现收纳功能,装燃⽓灶等,实现做饭功能.做饭这个事,就是MVC,在⼏千年前,有⽕有⻝材就可以实现做饭.

我们需要记住的是Spring MVC是一种思想,这种思想可以有很多方式来实现,而SpringBoot就是其中的一种。

不过Spring在实现MVC时,也结合⾃⾝项⽬的特点,做了⼀些改变,相对⽽⾔,下⾯这个图或许更加合适⼀些

在这里插入图片描述

上述图虽然变了,但是核心没有变。继续举上面讲MVC的时候的那个吃饭的例子。现在的这个模型可以理解为

该饭店是前台来进行接待客户,然后服务员只负责听前台的话,将菜传到顾客手中

🍀如何学习Spring MVC呢?

既然是 Web 框架, 那么当⽤⼾在浏览器中输⼊了 url 之后,我们的Spring MVC项⽬就可以感知到⽤⼾的请求,并给予响应.

咱们学习Spring MVC,重点也就是学习如何通过浏览器和⽤⼾程序进⾏交互.

主要分以下三个⽅⾯:

  1. 建⽴连接: 将⽤⼾(浏览器)和Java程序连接起来,也就是访问⼀个地址能够调⽤到我们的Spring程序。
  2. 请求: ⽤⼾请求的时候会带⼀些参数,在程序中要想办法获取到参数,所以请求这块主要是获取参数的功能.
  3. 响应: 执⾏了业务逻辑之后,要把程序执⾏的结果返回给⽤⼾,也就是响应.

⽐如⽤⼾去银⾏存款

  1. 建⽴连接:去柜台

  2. 请求:带着银⾏卡,⾝份证去存款

  3. 响应:银⾏返回⼀张存折.

对于Spring MVC来说,掌握了以上3个功能就可以学好Spring MVC.

⭕总结

关于《【JavaEE进阶】 初识Spring Web MVC》就讲解到这儿,感谢大家的支持,欢迎各位留言交流以及批评指正,如果文章对您有帮助或者觉得作者写的还不错可以点一下关注,点赞,收藏支持一下!

相关文章:

  • VSCode 加Cortex-Debug嵌入式调试方法
  • Required request body is missing: 前端接口报错错误解决
  • 【JAVA】java常用字符串操作技巧
  • Ubuntu 安装MySQL以及基本使用
  • C++ - 深拷贝与浅拷贝 bitwise senimatics和memberwise senimatics
  • 如何使用群晖Synology Office结合内网穿透实现多人远程编辑文件协同办公
  • jQuery显示,切换,隐藏的使用练习
  • 编程笔记 html5cssjs 004 我的第一个页面
  • 20231230 SQL基础50题打卡
  • 百度站长、SEO、收录,网站自动提交百度链接 vuejs
  • MacOS安装PHP5.6的Redis扩展
  • 城市自贸区/经开区/产业园基于EasyCVR视频技术的可视化、移动化、智能化视频监管方案
  • java spring boot 自定义 aop
  • [足式机器人]Part2 Dr. CAN学习笔记-自动控制原理Ch1-6根轨迹Root locus
  • k8s的陈述式资源管理
  • [译]CSS 居中(Center)方法大合集
  • ES2017异步函数现已正式可用
  • JavaScript 无符号位移运算符 三个大于号 的使用方法
  • JavaScript对象详解
  • Mac 鼠须管 Rime 输入法 安装五笔输入法 教程
  • React 快速上手 - 06 容器组件、展示组件、操作组件
  • Redux系列x:源码分析
  • spring boot 整合mybatis 无法输出sql的问题
  • Web标准制定过程
  • 产品三维模型在线预览
  • 关于 Cirru Editor 存储格式
  • 记一次删除Git记录中的大文件的过程
  • 解决jsp引用其他项目时出现的 cannot be resolved to a type错误
  • 力扣(LeetCode)965
  • 使用 Node.js 的 nodemailer 模块发送邮件(支持 QQ、163 等、支持附件)
  • 再谈express与koa的对比
  • ​油烟净化器电源安全,保障健康餐饮生活
  • #Js篇:单线程模式同步任务异步任务任务队列事件循环setTimeout() setInterval()
  • $L^p$ 调和函数恒为零
  • (react踩过的坑)antd 如何同时获取一个select 的value和 label值
  • (板子)A* astar算法,AcWing第k短路+八数码 带注释
  • (超简单)使用vuepress搭建自己的博客并部署到github pages上
  • (亲测成功)在centos7.5上安装kvm,通过VNC远程连接并创建多台ubuntu虚拟机(ubuntu server版本)...
  • (全注解开发)学习Spring-MVC的第三天
  • (三)Pytorch快速搭建卷积神经网络模型实现手写数字识别(代码+详细注解)
  • (转)linux自定义开机启动服务和chkconfig使用方法
  • * CIL library *(* CIL module *) : error LNK2005: _DllMain@12 already defined in mfcs120u.lib(dllmodu
  • ./和../以及/和~之间的区别
  • .bat批处理(七):PC端从手机内复制文件到本地
  • .gitignore文件设置了忽略但不生效
  • .net获取当前url各种属性(文件名、参数、域名 等)的方法
  • .NET设计模式(11):组合模式(Composite Pattern)
  • @EnableConfigurationProperties注解使用
  • @Resource和@Autowired的区别
  • @Tag和@Operation标签失效问题。SpringDoc 2.2.0(OpenApi 3)和Spring Boot 3.1.1集成
  • [<死锁专题>]
  • [acwing周赛复盘] 第 94 场周赛20230311
  • [AIGC] SQL中的数据添加和操作:数据类型介绍
  • [android] 切换界面的通用处理
  • [BZOJ5125]小Q的书架(决策单调性+分治DP+树状数组)