SpringMVC学习(请求与响应。常见参数类型接收与响应。@RequestParam、@RequestBody的使用)(详细示例)

目录

一、请求与响应。(@RequestMapping)

(1)使用注解@RequestMapping对业务模块区分。

StudentController。

TeacherController。

(2)Apifox请求与响应。

"/student/login"。

"/teacher/login"。

二、常见参数类型接收。

(1)字符串与数字类型。

请求路径参数名与接收请求方法参数名一致。

请求路径参数名与接收请求方法参数名不一致。

注解@RequestParam(name="?")。

(2)接收请求方法参数为实体对象。

(3)请求路径传参的实体对象中还有实体对象。

实体类。

代码示例。

请求与响应。

(4)接收数组类型的参数。

代码示例。

请求与响应。

(5)接收集合类型的参数。

请求数据当成普通数据放入集合。(注解@RequestParam)

请求数据当成对象类型放入集合。(注解@RequestBody)

(6)接收JSON格式的参数。

<1>核心依赖(jackson)。

<2>SpringMVC配置类。

<3>JSON数据集合对象接收。(@RequestBody)

<4>JSON数据实体对象接收。(@RequestBody)

<5>JSON数据集合接收,但集合内存储实体对象。(@RequestBody)

(7)日期类型参数传递。

<1>请求日期参数类型:年/月/日。

<2>请求日期参数类型:年-月-日。

<3>请求日期参数类型:年-月-日 时-分-秒。

<4>代码综合示例。

<5>请求与响应。


一、请求与响应。(@RequestMapping)

(1)使用注解@RequestMapping对业务模块区分。
  • StudentController。
package com.hyl.controller;import com.hyl.common.Result;
import com.hyl.pojo.Student;
import com.hyl.service.StudentService;
import org.springframework.web.bind.annotation.*;import javax.annotation.Resource;@RestController
@RequestMapping("/student")
public class StudentController {@Resourceprivate StudentService studentService;@PostMapping("/login")public Result login(@RequestBody Student student){System.out.println("StudentController login,,,");Student dbStudent = studentService.login(student);System.out.println("login success,,,");System.out.println(dbStudent);return Result.success(dbStudent);}}
  • TeacherController。
package com.hyl.controller;import com.hyl.common.Result;
import com.hyl.pojo.Student;
import com.hyl.pojo.Teacher;
import com.hyl.service.TeacherService;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import javax.annotation.Resource;@RestController
@RequestMapping("/teacher")
public class TeacherController {@Resourceprivate TeacherService teacherService;@PostMapping("/login")public Result login(@RequestBody Teacher teacher){System.out.println("TeacherController login,,,");Teacher dbTeacher = teacherService.login(teacher);System.out.println("login success,,,");System.out.println(dbTeacher);return Result.success(dbTeacher);}
}

(2)Apifox请求与响应。
  • "/student/login"。

  • "/teacher/login"。

二、常见参数类型接收。

(1)字符串与数字类型。
  • 请求路径参数名与接收请求方法参数名一致。
  • 代码示例。
package com.hyl.controller;import com.hyl.common.Result;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
@RequestMapping("/test")
public class TestController {@GetMapping("/demo")public Result demo(String username, String password) {System.out.println("TestController,,,");System.out.println("username:" + username);System.out.println("password:" + password);return Result.success();}
}
  • 请求与响应。


  • 请求路径参数名与接收请求方法参数名不一致。



  • 注解@RequestParam(name="?")。
  • 解决请求参数名与接收方法参数名不一致问题
package com.hyl.controller;import com.hyl.common.Result;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;@RestController
@RequestMapping("/test")
public class TestController {@GetMapping("/demo")public Result demo(@RequestParam(name = "username111")String username, String password) {System.out.println("TestController,,,");System.out.println("username:" + username);System.out.println("password:" + password);return Result.success();}
}
(2)接收请求方法参数为实体对象。
  • 请求参数名要与实体类属性名必须一致
package com.hyl.controller;import com.hyl.common.Result;
import com.hyl.pojo.Student;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
@RequestMapping("/test")
public class TestController {@GetMapping("/demo")public Result demo(Student student) {System.out.println("TestController,,,");System.out.println("username:" + student.getUsername());System.out.println("password:" + student.getPassword());return Result.success(student);}
}
  • 请求与响应。


(3)请求路径传参的实体对象中还有实体对象。
  • 实体类。
package com.hyl.pojo;import lombok.Data;@Data
public class City {private String province;  //省private String county;  //县
}
package com.hyl.pojo;import lombok.Data;@Data
public class Student {private Integer id;private String username;private String password;private String name;private City city;  //归属地
}

  • 代码示例。
package com.hyl.controller;import com.hyl.common.Result;
import com.hyl.pojo.Student;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
@RequestMapping("/test")
public class TestController {@GetMapping("/demo")public Result demo(Student student) {System.out.println("TestController,,,");System.out.println("username:" + student.getUsername());System.out.println("password:" + student.getPassword());System.out.println("省份:" + student.getCity().getProvince());System.out.println("县区:" + student.getCity().getCounty());return Result.success(student);}
}

  • 请求与响应。


(4)接收数组类型的参数。
  • 代码示例。
package com.hyl.controller;import com.hyl.common.Result;
import com.hyl.pojo.Student;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
@RequestMapping("/test")
public class TestController {@GetMapping("/demo")public Result demo(String[] sports) {System.out.println("TestController,,,");for (String s : sports) {System.out.println("运动:"+s);}return Result.success(sports);}
}

  • 请求与响应。


(5)接收集合类型的参数。
  • 请求数据当成普通数据放入集合。(注解@RequestParam)
package com.hyl.controller;import com.hyl.common.Result;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;import java.util.List;@RestController
@RequestMapping("/test")
public class TestController {@GetMapping("/demo")public Result demo(@RequestParam List<String> sports) {System.out.println("TestController,,,");for (String sport : sports) {System.out.println(sport);}return Result.success(sports);}
}


  • 请求数据当成对象类型放入集合。(注解@RequestBody)
package com.hyl.controller;import com.hyl.common.Result;
import com.hyl.pojo.Student;
import org.springframework.web.bind.annotation.*;import java.util.List;@RestController
@RequestMapping("/test")
public class TestController {@PostMapping("/demo")public Result demo(@RequestBody List<Student> students) {System.out.println("TestController,,,");for (Student student : students) {System.out.println(student);}return Result.success(students);}
}


(6)接收JSON格式的参数。
<1>核心依赖(jackson)。
<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind --><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><version>2.14.2</version></dependency>

<2>SpringMVC配置类。
package com.hyl.config;import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;@Configuration
@ComponentScan("com.hyl.controller")
@EnableWebMvc  //开启JSON接收与转换
public class SpringMvcConfig {
}

<3>JSON数据集合对象接收。(@RequestBody)
  • 代码示例。
package com.hyl.controller;import com.hyl.common.Result;
import org.springframework.web.bind.annotation.*;import java.util.List;@RestController
@RequestMapping("/test")
public class TestController {@PostMapping("/demo")public Result demo(@RequestBody List<String> sports) {System.out.println("TestController,,,");for (String sport : sports) {System.out.println(sport);}return Result.success(sports);}
}
  • 请求与响应。


<4>JSON数据实体对象接收。(@RequestBody)
  • 代码示例。
package com.hyl.controller;import com.hyl.common.Result;
import com.hyl.pojo.Student;
import org.springframework.web.bind.annotation.*;@RestController
@RequestMapping("/test")
public class TestController {@PostMapping("/demo")public Result demo(@RequestBody Student student) {System.out.println("TestController,,,");System.out.println(student);return Result.success(student);}
}
  • 请求与响应。


<5>JSON数据集合接收,但集合内存储实体对象。(@RequestBody)
  • 注意若集合存储非引用类型数据可以使用注解@RequestParam
  • 代码示例。
package com.hyl.controller;import com.hyl.common.Result;
import com.hyl.pojo.Student;
import org.springframework.web.bind.annotation.*;import java.util.List;@RestController
@RequestMapping("/test")
public class TestController {@PostMapping("/demo")public Result demo(@RequestBody List<Student> students) {System.out.println("TestController,,,");for (Student student : students) {System.out.println(student);}return Result.success(students);}
}
  • 请求与响应



(7)日期类型参数传递。
<1>请求日期参数类型:年/月/日。
  • 日期类型格式是"年/月/日"这种时,只需要用Java的Date类对象接收就可以。


<2>请求日期参数类型:年-月-日。
  • 日期类型格式是"年-月-日"这种时,接收参数Date类对象就需要使用注解@DateTimeFormat(pattern = "yyyy-MM-dd")来进行处理才不会报错。


<3>请求日期参数类型:年-月-日 时-分-秒。
  • 日期类型格式"年-月-日 时-分-秒"。接收参数Date类对象就需要使用@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")来进行处理才不会报错。


<4>代码综合示例。
package com.hyl.controller;import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;import java.util.Date;@Controller
@RequestMapping("/test")
public class TestController {@GetMapping("/test4")@ResponseBodypublic String test4(Date date,@DateTimeFormat(pattern = "yyyy-MM-dd")Date date2,@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")Date date3,@DateTimeFormat(pattern = "yyyy/MM/dd HH:mm:ss")Date date4){System.out.println("testController test4");System.out.println(date);System.out.println(date2);System.out.println(date3);System.out.println(date4);return "success 200";}}

<5>请求与响应。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/76080.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

回溯算法+对称剪枝——从八皇后问题到数独问题(二)

引入&#xff1a; 本节我们进一步完善八皇后问题&#xff0c;学习剪枝、八皇后残局问题 进一步领会逻辑编程的概念&#xff0c;深入体会回溯算法&#xff0c;回顾上一节提到的启发搜索策略。 回顾&#xff1a; 八皇后问题&#xff1a;我们需要在一个空棋盘上放置 n 个皇后&a…

【玩泰山派】MISC(杂项)- 使用vscode远程连接泰山派进行开发

文章目录 前言流程1、安装、启动sshd2、配置一下允许root登录3、vscode中配置1、安装remote插件2、登录 **注意** 前言 有时候要在开发板中写一写代码&#xff0c;直接在终端中使用vim这种工具有时候也不是很方便。这里准备使用vscode去通过ssh远程连接泰山派去操作&#xff0…

【VsCode】设置文件自动保存

目录 一、前言 二、操作步骤 一、前言 VSCode中开启自动保存功能可以通过访问设置、修改settings.json文件、使用自动保存延迟功能来实现。这些方法能有效提升编程效率、避免数据丢失、实时同步更改。 二、操作步骤 在 Visual Studio Code (VS Code) 中设置自动保存功能非…

Adobe After Effects的插件--------Optical Flares之Options概述

Optical Flares插件的Options是对整个效果的组装和设置。点击该按钮会弹出一个组装室弹窗。 Options组装室就是对每个【镜头对象】进行加工处理,再将其组装在一起,拼凑成完整的光效。 接下来是我对组装室的探索: 面板 面板中有预览、堆栈、编辑和浏览按钮,其作用是调节窗…

如何用 esProc 补充数据库 SQL 的缺失能力

某些数据库 SQL 缺失必要的能力&#xff0c;通常要编写大段的代码&#xff0c;才能间接实现类似的功能&#xff0c;有些情况甚至要改用存储过程&#xff0c;连结构都变了。常见的比如&#xff1a;生成时间序列、保持分组子集、动态行列转换、自然序号、相对位置、按序列和集合生…

迷你世界脚本脚本常见问题

脚本常见问题 彼得兔 更新时间: 2024-05-22 17:54:44 在查阅开发者学院中的脚本API时&#xff0c;若有任何问题或建议&#xff0c;欢迎通过问卷进行反馈&#xff01;【点我填写问卷】 1.Block中的data在什么地方使用 data使用有具体需求,此处不建议开发者使用。开发者尽可能使…

四、Appium Inspector

一、介绍 Appium Inspector 是一个用于移动应用自动化测试的图形化工具&#xff0c;主要用于检查和交互应用的 UI 元素&#xff0c;帮助生成和调试自动化测试脚本。类似于浏览器的F12(开发者工具),Appium Inspector 的主要作用包括&#xff1a;‌ 1.‌检查 UI 元素‌ …

android11通过白名单卸载安装应用

目录 1.源码路径: 2.准备文件package.conf: 3.安装方法installPackagesLI 4.卸载方法deletePackageX 1.源码路径: frameworks/base/services/core/java/com/android/server/pm/PackageManagerService.java public static final String WHITELIST_PATH="/data/misc/pa…

qt mapFrom返回的QPoint和event->pos()区别和globalPos区别

mousePressEvent 和 eventFilter 里 event.pos 不一样&#xff0c;一定要注意 eventFilter里event.pos 直接返回相对于label左上角的坐标&#xff0c;就不要再mapFrom mousePressEvent 里event.pos 返回是相对于窗口左上角的坐标&#xff0c;需要用mapFrom返回label左上角的…

Hadoop四 Hive语法

一 数据库操作 Hive数据库操作&#xff0c;与MySql有很多都是一致的 创建数据库 create database if not exists myhive; use myhive;查看数据库详细信息 desc database myhive;数据库本质上就是在HDFS之上的文件夹&#xff0c;是一个以.db结尾的目录&#xff0c;默认存…

前端VUE框架理论与应用(10)

1、记住全局注册的行为必须在根 Vue 实例 (通过 new Vue) 创建之前发生。 2、要注意,以 / 开头的嵌套路径会被当作根路径。 这让你充分的使用嵌套组件而无须设置嵌套的路径。 3、注意:在 Vue 实例内部,你可以通过 $router 访问路由实例。因此你可以调用 this.$router.push…

leetcode-单调栈26

关于单调栈的顺序总结&#xff1a; 寻找右边第一个比我大的&#xff1a;从左到右遍历&#xff0c;栈单调递减 寻找左边第一个比我小的&#xff1a;从左到右遍历&#xff0c;栈单调递增 寻找右边第一个比我小的&#xff1a;从右到左遍历&#xff0c;栈单调递增 寻找左边第一个比…

Linux:安装 CentOS 7(完整教程)

文章目录 一、简介二、安装 CentOS 72.1 虚拟机配置2.2 安装CentOS 7 三、连接远程服务器&#xff08;扩展&#xff09;3.1 获取虚拟机 IP 地址3.2 连接远程服务器 四、结语 一、简介 CentOS&#xff08;Community ENTerprise Operating System&#xff09;是一个基于 Linux 的…

Nautilus 正式发布:为 Sui 带来可验证的链下隐私计算

作为 Sui 安全工具包中的强大新成员&#xff0c;Nautilus 现已上线 Sui 测试网。它专为 Web3 开发者打造&#xff0c;支持保密且可验证的链下计算。Nautilus 应用运行于开发者自主管理的可信执行环境&#xff08;Trusted Execution Environment&#xff0c;TEE&#xff09;中&a…

Git完全指南:从入门到精通版本控制 ------- Git 工作流程 (3)

Git工作流程完全指南&#xff1a;从入门到高效协作 引言 Git作为分布式版本控制系统的行业标准&#xff0c;其高效的分支管理能力是团队协作的基石。本文将深入解析标准Git工作流程&#xff0c;助你掌握从代码提交到团队协作的全链路实践。 一、Git核心概念速览 三大工作区域 …

Distortion, Animation Raymarching

这节课的主要目的是对uv进行操作&#xff0c;实现一些动画的效果&#xff0c;实际就是采样的动画 struct texDistort {float2 texScale(float2 uv, float2 scale){float2 texScale (uv - 0.5) * scale 0.5;return texScale;}float2 texRotate(float2 uv, float angle){float…

《vue3学习手记3》

标签的ref属性 vue3和vue2中的ref属性&#xff1a; 用在普通DOM标签上&#xff0c;获取的是DOM节点 ref用在组件标签上&#xff0c;获取的是组件实例对象 区别在于&#xff1a; 1.vue3中person子组件中的数据父组件App不能直接使用&#xff0c;需要引入并使用defineExpose才可…

List基础与难度题

1. 向 ArrayList 中添加元素并打印 功能描述&#xff1a; 程序创建一个空的 ArrayList 集合&#xff0c;用于存储字符串类型的元素。向该 ArrayList 中依次添加指定的字符串元素。使用增强型 for 循环遍历 ArrayList 中的所有元素&#xff0c;并将每个元素打印输出到控制台。 …

楼宇自控系统如何为现代建筑打造安全、舒适、节能方案

在科技飞速发展的当下&#xff0c;现代建筑对功能和品质的要求日益提升。楼宇自控系统作为建筑智能化的核心技术&#xff0c;宛如一位智慧的“管家”&#xff0c;凭借先进的技术手段&#xff0c;为现代建筑精心打造安全、舒适、节能的全方位解决方案&#xff0c;让建筑真正成为…

绿算轻舟系列FPGA加速卡:驱动数字化转型的核心动力【2】

工业与医疗&#xff1a;精准化的幕后推手 在工业4.0与智慧医疗领域&#xff0c;绿算轻舟FPGA加速卡通过实时信号处理与高精度控制&#xff0c;推动关键场景的技术升级。 工业自动化&#xff1a;在机器视觉质检中&#xff0c;实现亚像素级缺陷检测&#xff0c;产线检测速度大幅…