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

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.dtcms.com/a/136251.html

相关文章:

  • 阿里云集群开启debug
  • LangChain缓存嵌入技术完全指南:CacheBackedEmbedding原理与实践(附代码示例)
  • 遵守 Vue3 的单向数据流原则:父组件传递对象 + 子组件修改对象属性,安全地实现父子组件之间复杂对象的双向绑定示例代码及讲解
  • 道路运输安全员企业负责人考试内容与范围
  • Zookeeper 可观测性最佳实践
  • 【Qt】QWidget 核⼼属性详解
  • 为啥mac日历打不开浏览器
  • 《分布式软总线赋能老旧设备高效通信》
  • 分布式光伏电站运维难?Acrel-1000DP助力安全稳定运行
  • Mybatis-Plus的使用
  • 视频压缩技术学习(不高明版本)
  • 5G时代,视频分析设备平台EasyCVR实现通信基站远程安全便捷管控
  • 修改wsl中发行版Ubuntu的主机名
  • linux服务器时不时丢包,该如何分析解决?
  • 第四十七篇 金融行业数据仓库设计实战:维度建模与业务场景深度解析
  • Java Stream流之GroupBy的用法
  • Servlet 线程安全与并发编程深度解析
  • 【Linux 并发与竞争】
  • AWS CloudFront加速S3配置跨域
  • 牟乃夏《ArcGIS Engine地理信息系统开发教程》学习笔记2
  • Reactor Core 中的 Flux:响应式数据流的核心实践
  • 【MySQL】索引分类、聚簇与非聚簇索引,索引优化,常见explain分析索引案例,type字段
  • 今日行情明日机会——20250416
  • Tree Shaking(摇树优化)详解
  • 【ROS】代价地图
  • 【技巧】chol分解时,矩阵非正定时的临时补救措施,以MATLAB为例
  • 数学教学通讯杂志数学教学通讯杂志社数学教学通讯编辑部2025年第6期目录
  • 深度解析C++开源OCR引擎:架构、编译优化与工业级部署指南
  • C++学习:六个月从基础到就业——面向对象编程:封装、继承与多态
  • 【Pandas】pandas DataFrame tail