使用jersey restful webservice生成.csv文件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用jersey restful webservice生成.csv文件相关的知识,希望对你有一定的参考价值。

我正在尝试生成一个.csv文件作为对一个宁静的Web服务的响应(使用Jersey)。到目前为止,我能够得到一个List<HashMap<String, String>>,密钥应该是CSV标头,值应该是CSV数据。

我正在使用Jackson API进行CSV生成。 代码流程是:

  1. 我从List<HashMap<String, String>>的DAO类中获取数据列表的名称是myArrList。 我的第一个疑问是,在真实场景中提供这样的文件位置是一个好主意吗?我怎么能这样做?如何在不在本地系统中实际创建文件的情况下发送包含数据的文件? File file = new File( "C:/Users/.../Downloads/RadioObjectData.csv"); Writer writer = null; ResponseBuilder response = null; Reader reader = null; //Copy List of Map Object into CSV format at specified File location. try { writer = new FileWriter( file, false); reader = new FileReader( file); csvWriter( myArrList, writer); // csvReader( reader); response = Response.ok( (Object)file); response.header( "Content-Disposition", "attachment; filename="RadioObjectData.csv""); // return response.build(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } //Read CSV format from specified File location and print on console.. return response.build(); 现在我发送这个ListcsvWriter方法在我的系统中创建一个.csv文件,这样我就可以发送这个文件作为对webservice的响应。(这种方法可以吗?) public static void csvWriter( List<HashMap<String, String>> listOfMap, Writer writer) throws IOException { CsvSchema schema = null; CsvSchema.Builder schemaBuilder = CsvSchema.builder(); if (listOfMap != null && !listOfMap.isEmpty()) { for (String col: listOfMap.get( 0).keySet()) { schemaBuilder.addColumn( col); } schema = schemaBuilder.build().withLineSeparator( " ").withHeader(); } CsvMapper mapper = new CsvMapper(); mapper.writer( schema).writeValues( writer).writeAll( listOfMap); writer.flush(); }
  2. 现在我的.csv驱动器在给定位置创建了一个C文件。 我希望在将CSV作为响应发送之前,将其编码在base64中。

我怎样才能实现这一切?

以上是关于使用jersey restful webservice生成.csv文件的主要内容,如果未能解决你的问题,请参考以下文章

使用 oAuth 2.0 保护基于 Jersey 的 REST 服务

使用 ClientResponse Jersey 调用 Rest API

使用 Jersey 和 Spring Security 实现 RESTful Web 服务

Java Restful框架:Jersey入门示例(官方例子)

Jersey / Rest 默认字符编码

Restful接口框架jersey