小大卫 2023-11-23 21:52 采纳率: 0%
浏览 18

spring-mvc的@ResponseBody问题


@RequestMapping(value = "getFilesName",
            produces = "text/html;charset=utf-8")
    @ResponseBody
    public String getFilesName(HttpServletRequest request,
                               HttpServletResponse response) throws Exception {
        //String path = request.getServletContext().getRealPath("/") + "files/files.json";
        String path = request.getServletContext().getRealPath("/files/files.json");
        //response.setContentType("application/json");
        String json = JSONFileUtils.readFile(path);
        System.out.println(json);
        //response.getWriter().print(json);
        return json;
    }

我发现这里的ResponseBody并没有帮我把数据写进response的body区,当我使用response.getWriter().print(json);页面才正常显示,这是为什么呢?

  • 写回答

4条回答 默认 最新

  • 小大卫 2023-11-23 22:10
    关注

    我只有一个猜测:会不会是因为我要会写的数据本身就是JSON格式的,然后导致@ResponseBody没有把数据回写到响应体(body区)。
    下面是我的前端获取数据的代码(使用jQuery):

    $(document).ready(function () {
        const url = "${pageContext.request.contextPath }/getFilesName";
        $.get(url, function (response) {
          console.log("返回结果::"+response);//这部分在浏览器控制台什么都没输出:即使response为空也应该有前面提示信息出现吧?可是什么都没有。
          var files = JSON.parse(response);
          for (let i = 0; i < files.length; i++) {
            $("#files").append("<li>" +
                    "<a href='${pageContext.request.contextPath}/download?filename=" + encodeURIComponent(files[i].name) + "'>" +
                    files[i].name + "</a></li>");
            console.log(files[i].name);
          }
        }).fail(function() {
          console.error("Error in the AJAX request");})//错误信息倒是有,看了一下详细信息,发现是setTimeout(异步),我的猜测应该是错的。
    //还有一条错误信息:GET http://localhost:8080/c13/getFilesName net::ERR_CONTENT_LENGTH_MISMATCH 200 (OK)
      })
    
    

    我的猜测应该是错的,但是不知道是什么问题,我用response.getWriter().print(json);页面是一切正常的。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 11月23日

悬赏问题

  • ¥20 TEC-9的数据通路实验
  • ¥15 ue5 .3之前好好的现在只要是激活关卡就会崩溃
  • ¥50 MATLAB实现圆柱体容器内球形颗粒堆积
  • ¥15 python如何将动态的多个子列表,拼接后进行集合的交集
  • ¥20 vitis-ai量化基于pytorch框架下的yolov5模型
  • ¥15 如何实现H5在QQ平台上的二次分享卡片效果?
  • ¥15 python爬取bilibili校园招聘网站
  • ¥30 求解达问题(有红包)
  • ¥15 请解包一个pak文件
  • ¥15 不同系统编译兼容问题