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

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

一、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 等

相关文章:

  • 精益数据分析(93/126):增长率的真相——从数据基准到科学增长策略
  • STM32F103_Bootloader程序开发04 - App跳转模块(app_jump.c与app_jump.h)
  • 仿DeepSeek AI问答系统完整版(带RAG本地知识库+联网搜索+深度思考) +springboot+vue3
  • 在Shopify性能调优过程中,如何考虑用户体验的完整性?
  • 针对C++开发工具推荐及分析(涵盖IDE、编译器、调试工具和辅助工具)
  • 流光溢彩的数字长河:Linux基础IO,文件系统的诗意漫游
  • 【25软考网工】第九章 网络管理(1)网络管理基础、SNMP
  • Python编程8——面向对象编程3
  • Bert和GPT区别
  • 一键清理,让电脑重获新生
  • 【鸿蒙开发】Hi3861学习笔记-光敏传感器
  • 【HW系列】—Log4j2、Fastjson漏洞流量特征
  • MySQL省市区数据表
  • 【西方哲学-0】西哲思维导图mermaid格式
  • 安世亚太:信息化和数字化的底层逻辑
  • 尚硅谷redis7 70-72 redis哨兵监控之案例实操7
  • 【C++】string类的使用(万字详解)
  • C语言循环结构实战:while和for到底用哪个?
  • JavaSE核心知识点04工具
  • 微信小程序关于截图、录屏拦截
  • 一流设计网站/百度竞价推广价格
  • 网站开发如何避免浏览器缓存的影响/一份完整的营销策划书
  • 以中文做域名的网站/网络优化工作应该怎么做
  • 网站建设 论文/大数据营销系统多少钱
  • wordpress网页设计价格设计/宁波关键词排名优化
  • tp框架做视频网站/怎么样引流加微信