Spring MVC极简入门:从@Reuest到Postman的全链路开发

发布于:2025-05-29 ⋅ 阅读:(28) ⋅ 点赞:(0)

一、Spring Web MVC

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

https://docs.spring.io/spring-framework/reference/web/webmvc.html

什么是Servlet呢?

Servlet 是运行在 Web 服务器或应用服务器上的 Java 程序,用于处理客户端(通常是浏览器)的 HTTP 请求并生成动态响应。(是⼀种实现动态页面的技术. 准确来讲Servlet是⼀套 Java Web 开发的规范,或者说是⼀套 Java Web 开发的技术标准,类似于JDBC是数据库的访问标准)它是 Java EE(Enterprise Edition)规范的核心组件之一,通常用于构建 Web 应用程序的后端逻辑。

总的来说:Spring Web MVC是一个Web框架,简称Spring MVC

1.1、MVC定义

MVC 是 Model View Controller 的缩写,它是软件工程中的⼀种软件架构设计模式,它把软件系统分为模型视图控制器三个基本部分

注意:此处视图与MySql中的视图不同

                 MySQL:视图是一个临时表

                 MVC:视图可以理解为一个界面 

         View:专门用来与浏览器交互、展示数据的资源

         • Controller:是应用程序的主体部分,用于处理程序中数据逻辑的部分

         • Model:作为分发器,决定用哪个模型处理请求,并跳转视图

抽象理解:去和平饭店吃饭~~~

        乌鸦走进饭店,服务员小姐姐走过来接待乌鸦点餐说到:“乌鸦,您请坐!你要吃什么?”,乌鸦:“来份炒鸡拌饭,不掀桌~~”,服务员给后厨赶紧发送命令,后厨忙里忙外做好,通知服务员小姐姐取餐,小姐姐把拌饭端到乌鸦所在的位置

在此过程中:

        服务员(视图):接待用户,帮助用户点餐,把饭端给顾客

        前台(控制器):根据顾客点餐情况,选择给哪个后厨下达命令

        后厨(模型):根据前台的要求完成顾客的用餐需求

1.2、Spring MVC

         MVC 是一架构设计模式, 也是一种思想, 而Spring MVC 是对 MVC 思想的具体实现. 除此之外, Spring MVC还是一个Web框架.

        总得来说:Spring MVC 是一个实现了MVC模式的Web框架

        在创建 Spring Boot 项目时,我们勾选的 Spring Web 框架,其实就是 Spring MVC 框架

 关系

Spring Boot 只是Spring MVC的其中一种方式

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

不过Spring 实现MVC时,结合自身项目特点,做出了一些改变如下图:

二、学习Spring MVC 

        既然是Web 框架,当用户中浏览器中输入URL 之后,我们的Spring MVC 项目就可以感知到用户的请求,并给与响应,学习Spring MVC也就是重点学习如何通过浏览器和用户程序进行交互

主要有以下三方面:

        (1)建立连接:将用户(浏览器)和Java程序连接起来(访问一个地址能够调用我们的Spring 程序)

        (2)请求:用户发送请求的时候会带有一些参数,在程序中要想办法获取到参数

        (3)响应:执行了业务逻辑之后,要把程序执行的结果返回给用户  

2.1、建立连接

         前提:创建Spring Web模块的项目

        在Spring MVC中使用 @RequestMapping 来实现URL路由映射,也就是浏览器连接程序的作用

        我们先创建一个 UserController 类,实现用户通过浏览器和程序的交互,代码如下:

package org.aokey.springtext;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RequestMapping("url")
@RestController
public class UserController {
    @RequestMapping("demo1")
    public String demo1(){
        return "路径测试!!!";
    }
}

        代码运行成功后,在浏览器中访问:http://127.0.0.1:8080/url/demo1,就可以看到返回的数据了

        注意:方法名和路径名可以不一致

2.1.1、 @RequestMapping注解介绍

        @RequestMapping 是Spring Web MVC应用程序中最常用到的注解之一,它是用来注册接口的路由映射的。

        表示服务收到请求时,路径为/url/demo1的请求就会调用demo1这个方法

        路由映射: 当用户访问⼀个 URL 时, 将用户的请求对应到程序中某个类的某个方法的过程就叫路由映射.

        那么通过@RequestMapping注解我们就可以调用到方法达到目的,为什么我们还要加上@RestController这个注解呢?        

        我们将@RestController注解删除后,再来运行并访问

        可以看到,程序报了404,找不到该页面,我们暂时理解为,这就是@RestController起到的作用

        通常在一个项目中会有很多类,每个类可能有很多方法,那Spring程序怎么知道要执行那个方法呢?

        其实Spring会对所有的类进行扫描,如果类加了注解@RestController,Spring才会去看这个类里面的方法有没有加@RequestMapping注解,暂时这么理解后续再介绍该知识

2.1.2、@RequestMapping使用

        @RequestMapping注解既可修饰类,也可以修饰方法,当同时修饰类和方法时,访问的地址为:类路径+方法路径

@RequestMapping标识一个类:设置映射请求的请求的请求路径的初始信息

@RequestMapping标识一个方法: 设置映射请求的请求的请求路径的具体信息

         注意:需要访问的方法前必须加上@RequestMapping注解,类可以不加(但为了避免错误和提高可读性建议加上),另外注解里路径前加不加 / 都可以,(当我们没有添加时,Spring会自动拼接上一个 /

        运行后我们发现只访问类路径会报错 :

2.1.3、 @RequestMapping是GET请求还是POST请求?
(1)GET请求:

        浏览器发送的请求类型都是Get,我们访问127.0.0.1:8080/url/demo1后,使用Fiddler抓包后发现,@RequestMapping支持GET请求

(2)POST请求:

         我们通过form表单来构造请求:

        创建text.html,HTML代码: 

         从运行结果上可看出:@RequestMapping 既支持Get请求,又支持Post请求,当然也支持其他的请求方式

2.1.4、指定GET/POST方法类型
@RequestMapping("url")
@RestController
public class UserController {
    @RequestMapping(value = "demo1", method = RequestMethod.GET)
    public String demo1(){
        return "路径测试!!!";
    }
    @RequestMapping(value = "demo2", method = RequestMethod.POST)
    public String demo2(){
        return "路径测试!!!";
    }
}

         上述代码指定了不同方法支持的GET/POST类型的请求

        图中注解里面的参数默认赋值给 value 属性,若多个参数,就要手动写属性名并赋值

        当然也可以同时指定多个方法类型

三、Postman

        在上面案例中,我们想要测试后端代码的方法时,需要去写前端代码,又麻烦又痛苦,实际工作中,项目开发会分给不同的团队,界面显示交给“前端开发工程师”,业务逻辑交给“后端开发工程师”,准备从事后端开发的我们其实是不太需要掌握前端技能的,我们可以借助专业的接口测试工具 Postman Apifox,我们以 Postman 来举例

3.1、下载安装postman

POstman下载链接https://www.postman.com/downloads/

3.2、创建请求

        创建一个请求并命名:

        界面介绍:

3.3、传参介绍 

3.3.1、普通传参

        也就是通过查询字符串来传参

        学习HTTP环节,我们通过URL来访问互联网上的某一资源,URL的格式如下:

        其中,我们要查询的字符串就是请求的参数

3.3.2、form-data

        表单提交的数据, 在 form 标签中加上 enctyped="multipart/form-data" , 通常用于提交图片/文件. 对应 Content-Type: multipart/form-data

3.3.3、x-www-form-urlencoded

        form表单, 对应 Content-Type: application/x-www-from-urlencoded

3.3.4、raw

        可以上传任意格式的文本,比如text、json、xml、html 等


网站公告

今日签到

点亮在社区的每一天
去签到