Spring Web MVC入门

2024-07-12 1316阅读

看完这篇博客你能学到什么

  1. 理解什么是Spring Web MVC
  2. 如何学习Spring MVC
  3. 了解常见的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 的缩写,它是软件⼯程中的⼀种软件架构设计模式,它把软件系统分为模型、视图和控制器三个基本部分,如下图所示

    Spring Web MVC入门

    可以向了解一下这几个部分的定义:

    • 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 Web MVC入门

      • 依据上面点餐的例子,主要的改变也就是,我们可以直接进入饭店直接到前台点餐,而不用间接叫服务员过来再点菜。
        如何学习Spring MVC呢?

        在简单理解了什么是Spring MVC之后,我们就能初步了解到底该怎样学习Spring MVC了。

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

        主要分以下三个⽅⾯:

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

        我们先学习的是连接:而Spring MVC 注解就是连接里面的重要部分。所以,我的这个博客框架顺序是紧密联系的,大主题能区分它们的主要内容,但是主体之间还紧密联系,哎哎哎,有那么一瞬间感觉自己真的好nb啊,好了我们进入正题,不开玩笑了。

        • 1,在 Spring MVC 中使⽤ @RequestMapping 来实现 URL 路由映射 ,也就是浏览器连接程序的作⽤,我们先来看看代码怎么写

          Spring Web MVC入门

          我们运行之后在浏览器上输入网址 http://127.0.0.1:8080/hello

          就能看到效果了。至于为啥这个网址可以,现在可以不做了解,不过以后随着学习的深入,肯定会了解的。

          效果如

          Spring Web MVC入门

          • 注意:我们可以看到我是在src/main/java/com.example.j20240711目录下创建的文件。一个习惯就是我们在 src 里面写正常的业务代码,在text里面写测试代码。因为我用的是 IDEA2022.3.3 的专业版所以有些页面可能会和你的不一样,不过大致框架都是一样的。其实,我们也能用标准版来写Spring,但要安装插件,比较麻烦。我图省事就选择专业版了,如果你也想用专业版,可以上CSDN搜教程,实在搞不定,可以去某宝低价买一个,很便宜,这样也能用专业版。

            @RequestMapping 是 Spring Web MVC 应⽤程序中最常被⽤到的注解之⼀,它是⽤来注册接⼝的路由映射的.表⽰服务收到请求时, 路径为 /sayHi 的请求就会调⽤ sayHi 这个⽅法的代码.

            路由映射: 当⽤⼾访问⼀个 URL(可以理解成一个网址)时, 将⽤⼾的请求对应到程序中某个类的某个⽅法的过程就叫路由映射.

            细心的同学会发现上面的注解除了 @RequestMapping ,还有@RestController那这个注解有什么用呢?我们可以先将他去掉试试。

            Spring Web MVC入门

            可以看到出现了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")//这是方法路径
                  //这里的方法名不一定非得是hello,可以换成其他的。
                  public String hello(){
                      return "hello";
                  }
              }
              //因此我们访问的时候,使用的网址应该是:http://127.0.0.1:8080/auto/hello
              
              • 注意:

                @RequestMapping 的URL 路径最前⾯加不加 / (斜杠)都可以, Spring程序启动时, 会进⾏判断, 如果前⾯没有加 / , Spring会拼接上⼀个 /

                通常情况下, 我们加上 / @RequestMapping 的URL路径也可以是多层路径, 最终访问时, 依然是 类路径 + ⽅法路径,如:

                Spring Web MVC入门

                上面主要介绍了两个注解,其实@RequestMapping 还没有讲解完,下部分的注解篇,我会单独写再写一篇博客。

                在这里我先提一个问题:假如我们想知道这个注解是支持get还是支持post呢?

                我们此时就需要写一些前端代码来发送数据,验证它到底是支持get,还是post,但是对于一个纯后端的人来说,我们是不懂前端代码到底怎么写的,此时Postman这个软件的作用就体现出来了,接下来的一期就是会讲到他的用法。

                下期预告:讲解 Postman的主要用法,以及学习Spring MVC的第二个重点:请求。

VPS购买请点击我

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

目录[+]