目錄
一、請求與響應。(@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>請求與響應。