Spring Web MVC入门
2024-07-12
한어 Русский язык English Français Indonesian Sanskrit 日本語 Deutsch Português Ελληνικά español Italiano Suomalainen Latina
看完这篇博客你能学到什么
理解什么是Spring Web MVC 如何学习Spring MVC 了解常见的Spring Web MVC注解
正文
什么是Spring Web MVC 呢?
从标题我们就能看见一个很陌生的名词“Spring Web MVC ”,这个名词听着很高大上,但它到底是啥呢?这是官方文档的解释: Spring Web MVC 是基于 Servlet API 构建的原始 Web 框架,从⼀开始就包含在 Spring 框架中。它的正式名称“Spring Web MVC”来⾃其源模块的名称(Spring-webmvc),但它通常被称为 SpringMVC 看不懂没关系,说人话就是:Spring Web MVC 是⼀个 Web 框架 然而想要真正理解Spring MVC 需要我们了解什么是MVC,其实MVC就是一种思想,MVC 是 Model View Controller 的缩写,它是软件⼯程中的⼀种软件架构设计模式,它把软件系统分为模型、视图和控制器三个基本部分,如下图所示 可以向了解一下这几个部分的定义: • View(视图) 指在应⽤程序中专⻔⽤来与浏览器进⾏交互,展⽰数据的资源. • Model(模型) 是应⽤程序的主体部分,⽤来处理程序中数据逻辑的部分. • Controller(控制器)可以理解为⼀个分发器,⽤来决定对于视图发来的请求,需要⽤哪⼀个模型来处理,以及处理完后需要跳回到哪⼀个视图。即⽤来连接视图和模型
主要的过程也就是:View 向 Contoller 发了一个请求,此时在Contoller内部进行选择,看哪一个解决方案(解决模型)能解决这个请求,选完以后就向Model发送指令,选择处理该问题的模型,等处理完以后,Model 就将处理结果先返回给Controller ,然后由Controller将结果返回给View视图。这就是MVC的主要框架,也是一种解决问题的思想。
⽐如去饭店吃饭 客⼾进店之后, 服务员来接待客⼾点餐, 客⼾点完餐之后, 把客⼾菜单交给前厅, 前厅根据客⼾菜单给后厨下达命令. 后厨负责做饭, 做完之后, 再根据菜单告诉服务员, 这是X号餐桌客⼈的饭. 在这个过程中 服务员就是View(视图), 负责接待客⼾, 帮助客⼾点餐, 以及给顾客端饭 前厅就是Controller(控制器), 根据⽤⼾的点餐情况, 来选择给哪个后厨下达命令. 后厨就是Model(模型), 根据前厅的要求来完成客⼾的⽤餐需求
综上所述:MVC 是⼀种架构设计模式, 也⼀种思想, ⽽ Spring MVC 是对 MVC 思想的具体实现. 除此之外, Spring MVC还是⼀个Web框架. 总结来说,Spring MVC 是⼀个实现了 MVC 模式的 Web 框架 由于SpringBoot 是 SpringMVC 的一种具体实现,所以我们创建的项目一般都是SpringBoot。这也解答了为啥有同学创建的项目是SpringBoot。Spring Boot 可以添加很多依赖, 借助这些依赖实现不同的功能. Spring Boot 通过添加Spring WebMVC框架, 来实现web功能. ⽐如: 厨房可以⽤来做饭, 但真实实现做饭功能的是⽕以及各种做饭相关的⻝材和⼯具.厨房就好⽐是SpringBoot, 厨房可以装柜⼦, 实现收纳功能, 装燃⽓灶等, 实现做饭功能.做饭这个事, 就是MVC, 在⼏千年前, 有⽕有⻝材就可以实现做饭.不过Spring在实现MVC时, 也结合⾃⾝项⽬的特点, 做了⼀些改变。
依据上面点餐的例子,主要的改变也就是,我们可以直接进入饭店直接到前台点餐,而不用间接叫服务员过来再点菜。
如何学习Spring MVC呢?
在简单理解了什么是Spring MVC之后,我们就能初步了解到底该怎样学习Spring MVC了。 咱们学习Spring MVC, 重点也就是学习如何通过浏览器和用户程序进⾏交互. 主要分以下三个⽅⾯:
建⽴连接:将⽤⼾(浏览器)和 Java 程序连接起来,也就是访问⼀个地址能够调⽤到我们的Spring 程序。 请求: ⽤⼾请求的时候会带⼀些参数,在程序中要想办法获取到参数, 所以请求这块主要是 获取参数的功能. 响应: 执⾏了业务逻辑之后,要把程序执⾏的结果返回给用户, 也就是响应.
常见的Spring Web MVC 注解
我们先学习的是连接:而Spring MVC 注解就是连接里面的重要部分。所以,我的这个博客框架顺序是紧密联系的,大主题能区分它们的主要内容,但是主体之间还紧密联系,哎哎哎,有那么一瞬间感觉自己真的好nb啊,好了我们进入正题,不开玩笑了。
1,在 Spring MVC 中使⽤ @RequestMapping 来实现 URL 路由映射 ,也就是浏览器连接程序的作⽤,我们先来看看代码怎么写 我们运行之后在浏览器上输入网址 http://127.0.0.1:8080/hello 就能看到效果了。至于为啥这个网址可以,现在可以不做了解,不过以后随着学习的深入,肯定会了解的。 效果如
注意:我们可以看到我是在src/main/java/com.example.j20240711目录下创建的文件。一个习惯就是我们在 src 里面写正常的业务代码,在text里面写测试代码。因为我用的是 IDEA2022.3.3 的专业版所以有些页面可能会和你的不一样,不过大致框架都是一样的。其实,我们也能用标准版来写Spring,但要安装插件,比较麻烦。我图省事就选择专业版了,如果你也想用专业版,可以上CSDN搜教程,实在搞不定,可以去某宝低价买一个,很便宜,这样也能用专业版。 @RequestMapping 是 Spring Web MVC 应⽤程序中最常被⽤到的注解之⼀,它是⽤来注册接⼝的路由映射的.表⽰服务收到请求时, 路径为 /sayHi 的请求就会调⽤ sayHi 这个⽅法的代码. 路由映射: 当⽤⼾访问⼀个 URL(可以理解成一个网址)时, 将⽤⼾的请求对应到程序中某个类的某个⽅法的过程就叫路由映射. 细心的同学会发现上面的注解除了 @RequestMapping ,还有@RestController那这个注解有什么用呢?我们可以先将他去掉试试。
可以看到出现了404,找不到该页面。
这就是 @RestController 起到的作⽤. ⼀个项⽬中, 会有很多类, 每个类可能有很多的⽅法, Spring程序怎么知道要执⾏哪个⽅法呢? Spring会对所有的类进⾏扫描, 如果类加了注解@RestController, Spring才会去看这个类⾥⾯的⽅法 有没有加 @RequestMapping 这个注解, 当然他的作⽤不⽌这⼀点, 咱们先⽤, 后⾯再详细讲
@RequestMapping的作用 @RequestMapping 既可修饰类,也可以修饰⽅法 ,当修饰类和⽅法时,访问的地址是类路径 + ⽅法路径. @RequestMapping标识⼀个类:设置映射请求的请求路径的初始信息 @RequestMapping标识⼀个⽅法:设置映射请求请求路径的具体信息
package com. example. j20240711 ;
import org. springframework. web. bind. annotation. RequestMapping ;
import org. springframework. web. bind. annotation. RestController ;
@RequestMapping ( "auto" )
@RestController
public class TextApplication {
@RequestMapping ( "hello" )
public String hello ( ) {
return "hello" ;
}
}
注意: @RequestMapping 的URL 路径最前⾯加不加 / (斜杠)都可以, Spring程序启动时, 会进⾏判断, 如果前⾯没有加 / , Spring会拼接上⼀个 / 通常情况下, 我们加上 / @RequestMapping 的URL路径也可以是多层路径, 最终访问时, 依然是 类路径 + ⽅法路径,如: 上面主要介绍了两个注解,其实@RequestMapping 还没有讲解完,下部分的注解篇,我会单独写再写一篇博客。 在这里我先提一个问题:假如我们想知道这个注解是支持get还是支持post呢? 我们此时就需要写一些前端代码来发送数据,验证它到底是支持get,还是post,但是对于一个纯后端的人来说,我们是不懂前端代码到底怎么写的,此时Postman这个软件的作用就体现出来了,接下来的一期就是会讲到他的用法。 下期预告:讲解 Postman的主要用法,以及学习Spring MVC的第二个重点:请求。