如何有效地在java servlet上创建和下载csv文件?

时间:2016-08-17 08:54:58

标签: java csv servlets

我的应用程序需要UI中的下载按钮,点击后可以让用户将数据下载为csv文件。 我有工作实现这样做,服务器端代码是这样的:

    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    int BUFFER = 1024;
    resp.setContentType("application/octet-stream");
    resp.setHeader("Content-Disposition:", "attachment;filename=" + "\"" + "sample_csv_filename" + ".csv\"");
    resp.setBufferSize(BUFFER);
    StringBuilder str = new StringBuilder();
    String comma = "";
    List<HashMap<String,Object>> tempList = //method call to get from database
    for(HashMap<String,Object> mp : tempList){comma = "";
         str.append("\n");
         for(String attr://Array of key values in HashMap){
                str.append(comma);
                comma = ",";
                str.append((String)mp.get(attr));
        }
    }
    byte bytes[] = str.toString().getBytes();
    resp.getOutputStream().write(bytes);
    resp.setContentLength(bytes.length);
    }

我对此实施有以下问题:

  1. 如果我的数据大小(要在文件中下载)增加字符串可以容纳的数量怎么办?
  2. 有没有办法将方法调用移到doGet函数外的数据库?
  3. 如何在从数据库中完全提取数据或在响应中写入数据之前启动文件下载?

0 个答案:

没有答案