目录
SpringMVC、SpringBoot接收参数
SpringMVC和SpringBoot接收参数的方式是一样一样的。
一、传非json参数
下面代码是get、post请求都支持,不过我们是把参数放到路径上,一半这种情况下都用get请求。
涉及到的注解:
- @RequestParam主要用于在SpringMVC后台控制层获取参数,它有三个常用参数:defaultValue = “0”, required = false, value = “xxx”;defaultValue 表示设置默认值,required 表示该参数是否必传,value 值表示接受的传入的参数的key。
- @PathVariable用于将请求URL中的模板变量映射到功能处理方法的参数上,即取出uri模板中的变量作为参数。
/** * http://localhost:80/add?username=zg&password=123456 * get post都支持,一半路径传参都用get请求 * @param username * @param password */ @RequestMapping(value = \"/add\") public void add(String username, String password) { log.info(\"打印参数:{}--{}\", username, password); } /** * http://localhost:80/add2?username=zg&password=123456 * get post都支持,一半路径传参都用get请求 * @param username * @param password * @return */ @RequestMapping(value = \"/add2\", name = \"haha\") public void add2(@RequestParam(value = \"username\") String username, @RequestParam(\"password\") String password) { log.info(\"打印参数:{}--{}\", username, password); } /** * http://localhost:80/add3?username=zg&password=123456 * get post都支持,一半路径传参都用get请求 * @return */ @RequestMapping(value = \"/add3\") public void add3(User user) { log.info(\"打印参数:{}--{}\", user.getUserName(), user.getPassword()); } /** * http://localhost:80/add4/zg/123456 * get post都支持,一半路径传参都用get请求 * @param username * @param password */ @RequestMapping(value = \"/add4/{username}/{password}\") public void add4(@PathVariable String username, @PathVariable String password) { log.info(\"打印参数:{}--{}\", username, password); } /** * http://localhost:80/add5?username=zg&password=123456 * get post都支持,一半路径传参都用get请求 * @param request */ @RequestMapping(value = \"/add5\") public void add5(HttpServletRequest request) { String username = request.getParameter(\"username\"); String password = request.getParameter(\"password\"); log.info(\"打印参数:{}--{}\", username, password); }
二、传json参数
1、单个实体接收参数
/** * http://localhost/toUser/add6 * body: {\"username\":\"张刚\",\"password\":\"123456\"} * get post都可以 * * @param user * @return */ @RequestMapping(value = \"/add6\") public void add6(@RequestBody User user) { log.info(\"打印参数:{}--{}\", user.getUserName(), user.getPassword()); }
2、实体嵌套实体接收参数
注解:
- @RequestBody:该注解会把接收到的参数转为json格式
实体
@Data @ToString public class People { private Integer count; private String peoplename; private Student student; } @Data @ToString public class Student { private String studentname; }
/** * http://localhost:80/add7 * body: {\"peoplename\":\"张刚\",\"student\":{\"studentname\":\"你好\"}} * get post都可以, body传参一般都用post * @param */ @RequestMapping(value = \"/add7\") public void add7(@RequestBody People people) { log.info(\"打印参数:{}--{}\", people.getPeoplename(), people.getStudent().getStudentname()); }
3、实体嵌套List接收参数
实体
@Data @ToString public class People { private Integer count; private String peoplename; private List<Student> student; } @Data @ToString public class Student { private String studentname; }
/** * http://localhost:80/add8 * body: {\"peoplename\":\"张刚\",\"student\":[{\"studentname\":\"你好\"},{\"studentname\":\"很好\"}]} * get post都可以, body传参一般都用post * @param */ @RequestMapping(value = \"/add8\") public void add8(@RequestBody People people) { List<Student> student = people.getStudent(); student.stream().forEach(System.out::println); log.info(\"打印参数:{}--{}\", people.getPeoplename()); }
4、Map接收参数
/** * http://localhost:80/add9 * body: {\"peoplename\":\"张刚\",\"student\":[{\"studentname\":\"你好\"},{\"studentname\":\"很好\"}]} * get post都可以, body传参一般都用post * * @param */ @RequestMapping(value = \"/add9\") public void add7(@RequestBody Map<String, Object> map) { log.info(map.get(\"peoplename\").toString()); List<Map<String, Object>> studentMapList = (List<Map<String, Object>>) map.get(\"student\"); studentMapList.stream().forEach(System.out::println); }
© 版权声明
THE END
暂无评论内容