欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 教育 > 高考 > 【JavaEE】Spring Web MVC

【JavaEE】Spring Web MVC

2025/5/11 3:36:01 来源:https://blog.csdn.net/2303_77535762/article/details/146216517  浏览:    关键词:【JavaEE】Spring Web MVC

【JavaEE】Spring Web MVC

  • 一、什么是Spring Web MVC
      • 1.1 MVC
      • 1.2 Spring MVC
      • 1.3 Spring web
  • 二、注释学习及使用
      • 2.1 @RequestMapping注解
        • @RequestMapping请求设置
      • 2.2 请求
      • 2.3 传递单个参数
      • 2.4 传递多个参数
      • 2.4 传递对象
      • 2.5 @RequestParam注解 后端参数重命名
      • 2.6 传递数组
      • 2.7 传递集合,@RequestParam
      • 2.8 传递JSON数据
        • 测试Java对象和JSON转换
        • JSON传参
        • JSON优点
      • 2.9 获取URL中参数@PathVariable
      • 2.10 上传文件@RequestPart

此篇博客结尾附有此篇博客的全部代码!!!

一、什么是Spring Web MVC

Spring Web MVC 是 Spring 框架中用于构建 Web 应用程序的模块,它是基于 Java 的轻量级 Web 框架,遵循经典的 Model-View-Controller(模型-视图-控制器)设计模式。

1.1 MVC

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

  • View(视图): 视图是用户界面,负责将数据呈现给用户。
  • Model(模型) :模型是应用程序的核心,负责处理数据和业务逻辑。
  • Controller(控制器):控制器是模型和视图之间的桥梁,负责处理用户输入和业务逻辑。

在这里插入图片描述

1.2 Spring MVC

MVC 是⼀种架构设计模式, 也是⼀种思想, ⽽ Spring MVC 是对 MVC 思想的具体实现.除此之外, Spring MVC还是⼀个Web框架,总结来说,Spring MVC 是⼀个实现了MVC 模式的 Web 框架,专门用于开发基于 Java 的 Web 应用。

在这里插入图片描述

1.3 Spring web

既然是Web 框架, 那么当⽤⼾在浏览器中输⼊了 url 之后,我们的 Spring MVC 项⽬就可以感知到⽤⼾的请求, 并给予响应。

学习Spring MVC主要从以下三个方面学习:

  • 建立连接
  • 请求
  • 响应

二、注释学习及使用

2.1 @RequestMapping注解

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

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

@RequestMapping 既可修饰类,也可以修饰⽅法 ,当修饰类和⽅法时,访问的地址是类路径 + ⽅法路径.

@RestController
@RequestMapping("/RequestMapping")
public class RequestMappingDemo {@RequestMapping("/r1")public String r1(){return "r1";}
}

运行结果:
在这里插入图片描述
注意:
@RequestMapping 的URL 路径最前⾯加不加 / (斜杠)都可以, Spring程序启动时, 会进⾏判断, 如果前面没加 / ,spring会自动拼接一个 /

@RestController
@RequestMapping("RequestMapping")
public class RequestMappingDemo {@RequestMapping("r1")public String r1(){return "r1";}
}

这里还是可以运行成功的!

@RequestMapping请求设置

在这里插入图片描述
这里给大家介绍一个工具Postman(Postman就是专门测试后端代码的,可以发送不同的请求)。
在这里插入图片描述

这样设置之后,就只能支持POST请求或者只支持GET请求。

2.2 请求

客户端(如浏览器或移动应用)向服务器发送请求,服务器处理请求并返回响应的过程。在 Java Web 开发中,尤其是使用 Spring 框架时,请求处理是一个核心概念。

访问不同的路径, 就是发送不同的请求. 在发送请求时, 可能会带⼀些参数, 所以学习Spring的请求,主要是学习如何传递参数到后端以及后端如何接收.
传递参数, 咱们主要是使⽤浏览器和Postman来模拟.

2.3 传递单个参数

@RequestMapping("Demo")
@RestController
public class Demo1 {@RequestMapping("r1")public String r1(String name){return "返回参数:"+name;}
}

在这里插入图片描述

2.4 传递多个参数

    @RequestMapping("r2")public String r2(String name,Integer age){return "返回姓名:" + name + "返回年龄:"+ age;}

在这里插入图片描述

2.4 传递对象

public class Person {private String name;private int age;public Person(String name, int age) {}public String getName() {return name;}public int getAge() {return age;}public void setName(String name) {this.name = name;}public void setAge(int age) {this.age = age;}@Overridepublic String toString() {return "Person{" +"name='" + name + '\'' +", age=" + age +'}';}
}@RequestMapping("r3")public String r3(Person person){return person.toString();}

在这里插入图片描述

2.5 @RequestParam注解 后端参数重命名

@RequestParam 的主要作用是从 HTTP 请求中提取参数值,并将其传递给控制器方法的参数。

    @RequestMapping("r4")public String r4(@RequestParam("n") String name){return "返回参数" + name;}

在这里插入图片描述

    @RequestMapping("r4")public String r4(@RequestParam(value = "n",required = false) String name){return "返回参数" + name;}

这样设置之后,n就不是必传参数了!

2.6 传递数组

    @RequestMapping("r6")public String r6(String[] str){return Arrays.toString(str);}

在这里插入图片描述
用postman传递数组,红框和绿框传递方式都可以。

2.7 传递集合,@RequestParam

集合参数:和数组类似, 同⼀个请求参数名有为多个, 且需要使⽤ @RequestParam 绑定参数关系

    @RequestMapping("r7")public String r6(@RequestParam ArrayList<String> array){return array.toString();}

在这里插入图片描述

2.8 传递JSON数据

JSON就是⼀种数据格式, 有⾃⼰的格式和语法, 使⽤⽂本表⽰⼀个对象或数组的信息, 因此JSON本质是字符串. 主要负责在不同的语⾔中数据传递和交换.

语法:

  • 数据在 键值对(Key-Value) 中
  • 数据由逗号, 分隔
  • 对象⽤ { } 表⽰
  • 数组⽤ [ ] 表⽰
  • 值可以为对象, 也可以为数组, 数组中可以包含多个对象
  • 键key和值value之间通过冒号分割
  • 键值对之间使用逗号分割
    在这里插入图片描述
测试Java对象和JSON转换

用test类来测试一下(下面图片有详细创建及测试):

@Test注释:

  • @Test 用于标记测试方法。
  • 测试方法必须是 public 和 void 类型,且不能接受任何参数。

ObjectMapper 是 Jackson 库中的一个核心类,用于处理 JSON 数据的序列化(将对象转换为 JSON 字符串)和反序列化(将 JSON 字符串转换为对象)。

使用类ObjectMapper下面的writeValueAsString方法。类对象必须要有无参构造函数。

import com.abcdefg.springmvc.demo.Person;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.junit.jupiter.api.Test;public class TestJson {@Testvoid r8() throws JsonProcessingException {ObjectMapper objectMapper = new ObjectMapper();//创建对象Person person = new Person();person.setAge(1);person.setName("zhangsan");//对象转JSONString j = objectMapper.writeValueAsString(person);System.out.println(j);}@Testvoid r9() throws JsonProcessingException {ObjectMapper objectMapper = new ObjectMapper();//JSONString s = "{\"name\":\"John\",\"age\":30}";//JSON转对象Person person = objectMapper.readValue(s, Person.class);System.out.println(person.toString());}
}

在这里插入图片描述

JSON传参

实现JSON对象交互要使用@RequestBody注解:

@RequestBody: 请求正⽂,意思是这个注解作⽤在请求正⽂的数据绑定,请求参数必须在写在请求正⽂中

    @RequestMapping("r8")public String r8(@RequestBody Person person){return person.toString();}

在这里插入图片描述

JSON优点
  1. 简单易⽤: 语法简单,易于理解和编写,可以快速地进⾏数据交换
  2. 跨平台⽀持: JSON可以被多种编程语⾔解析和⽣成, 可以在不同的平台和语⾔之间进⾏数据交换和传输
  3. 轻量级: 相较于XML格式, JSON数据格式更加轻量级, 传输数据时占⽤带宽较⼩, 可以提⾼数据传输速度
  4. 易于扩展: JSON的数据结构灵活,⽀持嵌套对象和数组等复杂的数据结构,便于扩展和使⽤
  5. 安全性: JSON数据格式是⼀种纯⽂本格式,不包含可执⾏代码, 不会执⾏恶意代码,因此具有较⾼的安全性

2.9 获取URL中参数@PathVariable

和字⾯表达的意思⼀样, 这个注解主要作⽤在请求URL路径上的数据绑定

    @RequestMapping("/article/{id}/{he}")public String r9(@PathVariable Integer id, @PathVariable("he") String type){return id+":"+type;}

在这里插入图片描述

2.10 上传文件@RequestPart

MultipartFile 是 Spring 提供的一个接口,用于封装上传文件的相关信息,例如文件名、文件内容、文件大小等。

    @RequestMapping("r10")public String r10(@RequestPart("file") MultipartFile file) throws IOException {file.transferTo(new File("D:/Project/pic/tmp/"+ file.getOriginalFilename()));return  file.getOriginalFilename();}

在这里插入图片描述
此篇博客的全部代码!!!

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词