Spring如何从客户端接收json数据以及如何发送json数据到客户端(一)

        首先,Spring是没有自带json转换数据的包的,所有我们要自己导入json的包到类路径下,假如是使用Maven的话可以加入以下语句到pom.xml中,还有如果你是使用SpringBoot的话不用加json的包,SpringBoot 默认会使用 Json 作为响应报文格式。(我下面是选用springboot做的,因为最近在学习springboot)

        Maven的添加包(采用gson的包)

 <dependency>
            <groupId>com.google.code.gson</groupId>
            <artifactId>gson</artifactId>
            <version>2.8.5</version>
        </dependency>    
       1、使用Spring接收json数据,要实现这点不难,只要在对应的形参对象上使用注解@RequestBody就可以了,例如
public class User {

    private String username;
    private String password;

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getPassword() {
        return password;
    }

    @Override
    public String toString() {
        return "User{" +
                "username='" + username + '\'' +
                ", password='" + password + '\'' +
                '}';
    }
}
然后在控制器的相应的方法的参数类型前使用@RequestBody
public User Post(@RequestBody  User user, HttpServletRequest httpServeltRequest, HttpServletResponse httpServletResponse) throws IOException {
        System.out.println(user);
        return user;
    }

注意,@RequestBody一定要在形参对象的类型前面,注意,Spring会调用类路径下的json包,但是它会根据json传递的键名和变量的域的名字进行匹配,而且还必须得有get和set(javaBean)的方法。例如一旦你这里把username写成UserName,json将解析不出来。

        一旦匹配成功,spring将自动把json中的参数赋值到对象中来。

        2、使用Spring发送json参数,对于这点,有两个方法,一是使用@ResponseBody,二是使用@RestController

@RequestMapping(method = RequestMethod.POST)
    public @ResponseBody User Post(@RequestBody  User user, HttpServletRequest httpServeltRequest, HttpServletResponse httpServletResponse) throws IOException {
        System.out.println(user);
        return user;
    }

@ResponseBody放在方法返回类型的前面,当加上@ResponseBody的时候,Spring会跳过正常的MVC流程,转而直接将数据以特定的形式发送的到客户端(可能是根据请求头中的数据类型)

        第二种是采用将@Controller改成@RestController的形式

@Controller
@RequestMapping("/json")
public class JsonController {

    @RequestMapping(method = RequestMethod.POST)
    public User Post(@RequestBody  User user, HttpServletRequest httpServeltRequest, HttpServletResponse httpServletResponse) throws IOException {
        System.out.println(user);
        return user;
    }
}
这样的效果跟@ResponseBody一样,但是不同的是这个类(JsonController )下面的全部方法都变成非正常MVC的形式,所以两种方式要选择性使用
  
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值