SpringBoot如何通过注释返回指定的response的contentType格式

省流版:

如下

@RequestMapping(value = "/login",produces = "text/json")

在mapping中加入属性produces,produces的值就是响应头中的contentType啦

上面的produces表示控制器方法产生的响应内容的MIME类型是 "text/json",即指定返回的内容类型为纯文本的JSON格式。

听我水版:

问题场景是这样的:

本人在完成大数据课设的一个作业,偷懒就直接网上找了一份,但是不能照抄吧,总得改一下再交

于是我就对应着代码进行修改。

没想到这个代码 写的挺离谱。

都用springboot了,什么年代了还在用传统servlet编程

如下图

 于是就让我有了大量发挥的机会

自然是使用注解指定参数,抛弃 PrintWriter,使用@ResponseBody直接传回参数

改为了如下

    // 用户登录
    @RequestMapping(value = "/login")
    @ResponseBody
    public String login(@RequestParam(name = "userName") String userName,
                        @RequestParam(name = "password") String password) throws IOException {
        System.out.println("userName= " + userName + " , password= "+password);

        JSONObject json = new JSONObject();
        // 检查用户信息是否正确
        if(!userService.loginCheck(userName,password)){
            System.out.println("未找到相关用户信息!");
            json.put("status","error");
            return json.toJSONString();
        }
        json.put("status","ok");
        json.put("username",userName);
        json.put("currentPath","/"+userName);
        List<HDFSFile> fileList = fileService.getFileList("/" + userName);
        json.put("fileList",fileList);
        System.out.println(fileList);
        return json.toJSONString();
    }

然后类似的controller改了个遍

信心满满运行 之后发现 出现了个奇怪的bug

用户登录提交过后,控制台打印登录成功的信息,但是前端竟然返回“用户名或密码错误”

在网页上检查请求的请求头和响应头后我发现了问题:

        这次响应头的contentType为 “text/plain“

        原来的代码指定了

response.setContentType("text/json; charset=UTF-8");

        那么估计就是因为没有指定响应头,导致前端没有正确解析返回的json数据,从而回显错误信息

        

那么使用注解怎么指定响应的contentType呢?

@RequestMapping(value = "/login",produces = "text/json")

在mapping中加入属性produces,produces的值就是响应头中的contentType啦

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值