目录
一、请求与响应。(@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>请求与响应。