数据交互

举报
俺想吃蜂蜜 发表于 2022/04/11 13:10:02 2022/04/11
【摘要】 数据交互在项⽬中,经常会遇到这样的场景,前端⻚⾯中发送ajax请求给Controller中的处理⽅法,处理⽅法返回json格式的字符串给这个ajax请求。当然,前⾯⻚⾯发送的请求中携带的参数,也可以是正常的k=v的形式 接收参数 1、参数是基本数据类型/包装类型/String@RequestMapping("test") public String test(int age){...}pu...

数据交互

在项⽬中,经常会遇到这样的场景,前端⻚⾯中发送ajax请求给Controller中的处理⽅法,处理⽅法返回
json格式的字符串给这个ajax请求。

当然,前⾯⻚⾯发送的请求中携带的参数,也可以是正常的k=v的形式

接收参数

1、参数是基本数据类型/包装类型/String

@RequestMapping("test") public String test(int age){...}

public String test(long id){...}

public String test(boolean flag){...}

public String test(Long id){...}

public String test(String name){...}

注意,参数名字要和客户端传的参数名⼀致,否则需要使⽤

@RequestParam 来指定参数名

2.参数是数组类型

@RequestMapping("test") public String test(int[] age){...}

public String test(long[] id){...}

public String test(boolean[] flag){...}

public String test(Long[] id){...}

public String test(String[] name){...}

注意,客户端传值类似于这样:name=tom&name=lisi

3、参数是数组类型(json格式)

@RequestMapping("/index")

@ResponseBody

public String index(@RequestBody String[] arr){...}

4、参数是类类型

例如,实体类Uesr、Student等

@RequestMapping("test")

public String test(User user){...}

注意,客户端传值类似于这样:

id=1&name=tom&dob=1999-11-11

5、参数是类类型的数组(json格式)

@RequestMapping("/test")

public String test(@RequestBody User[] users){...}

6、参数是List/Set集合(json格式)

@RequestMapping("/index")

@ResponseBody

public String index(@RequestBody List<String> list){...}

例如:

@RequestMapping("/index")

@ResponseBody

public String index(@RequestBody List<User> list){....}

7、参数是Map集合(json格式)

@RequestMapping("/index")

@ResponseBody

public String index(@RequestBody Map<Long,User> map){...}

8 采⽤restful⻛格进⾏请求:

@RestController

public class UserController {

@GetMapping("/hello/{userid}")

public String hello(@PathVariable("userid") String userid) {

System.out.println(userid);

return userid;

}

}

返回数据

1、给ajax请求返回单值

@ResponseBody

@RequestMapping(value="test1",consumes="application/json",produces="applic

ation/js

on" ,method=RequestMethod.POST)

public String test1(@RequestBody User user){

System.out.println("user = "+user);

return "hello world";

}

2、给ajax请求返回数组(json格式)

@ResponseBody

@RequestMapping(value="test2",consumes="application/json",produces="applicat

ion/js on" ,method=RequestMethod.POST)

public String[] test2(@RequestBody User user){

System.out.println("user = "+user);

return new String[]{"hello","world","tom"};

}

3、给ajax请求返回⾃定义类型的数组(json格式)

@ResponseBody

@RequestMapping(value="test3",consumes="application/json",produces="applicat

ion/js on" ,method=RequestMethod.POST)

public User[] test3(@RequestBody User user){

System.out.println("user = "+user);

return new User[]{new User(1L,"tom1"),new User(2L,"tom2"),new

User(3L,"tom3")};

}

4、给ajax请求返回List集合(json格式)

@ResponseBody

@RequestMapping(value="test4",consumes="application/json",produces="applicat

ion/js on" ,method=RequestMethod.POST)

public List<User> test4(@RequestBody User user){

System.out.println("user = "+user);

return Arrays.asList(new User(1L,"tom1"),new User(2L,"tom2"),new

User(3L,"tom3"));

}

5、给ajax请求返回Set集合(json格式)

@ResponseBody

@RequestMapping(value="test5",consumes="application/json",produces="applicat

ion/j son" ,method=RequestMethod.POST)

public Set<User> test5(@RequestBody User user){

System.out.println("user = "+user);

Set<User> set = new HashSet<>();

set.add(new User(1L,"tom1"));

set.add(new User(2L,"tom2"));

set.add(new User(3L,"tom3")); return set;

}

6、给ajax请求返回Map集合(json格式)

@ResponseBody

@RequestMapping(value="test6",consumes="application/json",produces="applicat

ion/j son" ,method=RequestMethod.POST)

public Map<String,User> test6(@RequestBody User user){

System.out.println("user = "+user);

Map<String,User> map = new HashMap<>();

map.put("tom1", new User(1L,"tom1"));

map.put("tom2", new User(2L,"tom2"));

map.put("tom3", new User(3L,"tom3"));

return map;

}
【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

举报
请填写举报理由
0/200