• Spring Web MVC入门


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

    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 的缩写,它是软件⼯程中的⼀种软件架构设计模式,它把软件系统分为模型、视图和控制器三个基本部分,如下图所示
      在这里插入图片描述
      可以向了解一下这几个部分的定义:
      • 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, 重点也就是学习如何通过浏览器和用户程序进⾏交互.
    主要分以下三个⽅⾯:

    1. 建⽴连接:将⽤⼾(浏览器)和 Java 程序连接起来,也就是访问⼀个地址能够调⽤到我们的Spring 程序。
    2. 请求: ⽤⼾请求的时候会带⼀些参数,在程序中要想办法获取到参数, 所以请求这块主要是 获取参数的功能.
    3. 响应: 执⾏了业务逻辑之后,要把程序执⾏的结果返回给用户, 也就是响应.
    常见的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")//这是方法路径
        //这里的方法名不一定非得是hello,可以换成其他的。
        public String hello(){
            return "hello";
        }
    }
    //因此我们访问的时候,使用的网址应该是:http://127.0.0.1:8080/auto/hello
    
    • 注意:
      @RequestMapping 的URL 路径最前⾯加不加 / (斜杠)都可以, Spring程序启动时, 会进⾏判断, 如果前⾯没有加 / , Spring会拼接上⼀个 /
      通常情况下, 我们加上 / @RequestMapping 的URL路径也可以是多层路径, 最终访问时, 依然是 类路径 + ⽅法路径,如:
      ,
      上面主要介绍了两个注解,其实@RequestMapping 还没有讲解完,下部分的注解篇,我会单独写再写一篇博客。
      在这里我先提一个问题:假如我们想知道这个注解是支持get还是支持post呢?
      我们此时就需要写一些前端代码来发送数据,验证它到底是支持get,还是post,但是对于一个纯后端的人来说,我们是不懂前端代码到底怎么写的,此时Postman这个软件的作用就体现出来了,接下来的一期就是会讲到他的用法。
      下期预告:讲解 Postman的主要用法,以及学习Spring MVC的第二个重点:请求。
  • 相关阅读:
    rpm管理
    TypeError: Cannot read properties of undefined (reading ‘NormalModule‘) 错误的解决方案
    .Net下的Http请求调用(Post与Get)
    Web应用接入OAuth2
    TCP 和 UDP 的 Socket 调用
    vue echarts条形统计图每个条上部分加数字
    IB选课指南及热门专业选课建议
    C++可调用对象的绑定器和包装器
    【Web开发】纯前端实现科技企业官网首页
    机器学习入门三
  • 原文地址:https://blog.csdn.net/2303_79064370/article/details/140346618