java - 如何从 Spring Controller 在浏览器中返回 CSV 数据

标签 java spring spring-mvc csv

假设我在字符串中有 CSV 数据,并希望从 Spring Controller 返回它。想象一下数据是这样的

a,b,c 
1,2,3
4,5,6

无论我尝试了什么,换行符在响应内容中的字面意思是 '\n',如果我像在 "\n"中那样对它们进行双重转义,则响应也只包含双反斜杠。一般来说,如何在不修改换行符的情况下返回带有换行符的纯文本数据?我知道如何返回纯文本,但内容仍然带有转义的换行符......这是我目前拥有的(使用 Spring 3.0.5,不是选择)

@RequestMapping(value = "/api/foo.csv")
public ResponseEntity<String> fooAsCSV() {

    HttpHeaders responseHeaders = new HttpHeaders();
    responseHeaders.add("Content-Type", "text/plain; charset=utf-8");

    String data = "a,b,c\n1,2,3\n3,4,5";
    return new ResponseEntity<>(data, responseHeaders, HttpStatus.OK);
}

这会产生字面上的字符串

"a,b,c\n1,2,3\n,3,4,5"

在浏览器中。如上所示,如何使用新行生成正确的数据?

最佳答案

您可以使用例如直接写入响应

@RequestMapping(value = "/api/foo.csv")
public void fooAsCSV(HttpServletResponse response) {         
    response.setContentType("text/plain; charset=utf-8");
    response.getWriter().print("a,b,c\n1,2,3\n3,4,5");
}

由于返回类型是 void 并且 HttpServletResponse 被声明为方法参数,因此假定该方法返回时请求已完成。

关于java - 如何从 Spring Controller 在浏览器中返回 CSV 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22947751/

相关文章:

java - 如何配置jenkins定期构建和运行spring boot项目?

java - 如何在用户角色中实现开始和结束日期

java - 为什么我的程序不能运行java循环中的内容?

java - 包更改后在tomcat中发布失败

java - Spring 4 不会自动限定 Autowiring 上的泛型类型

maven - @Valid 无法解析为 Spring 4.0.3 类型

java - 使用 Bootstrap 在 Spring 元素中不显示图标

java - 找不到类 javax.persistence.EntityNotFoundException

java - 奇怪的 setRowspan 错误/不起作用

java - 基于配置属性中的集合是否为空的 Spring Boot 条件