отправить файл Excel клиенту, используя сервлеты Java
я используюApache POI для генерациипревосходить файл вСервлеты Java.
getExcel()
функция возвращаетHSSFWorkbook
, который я хочу отправить клиенту.
HSSFWorkbook wb = getExcel();
Это то, что я пробовал до сих пор.
//block1
ByteArrayOutputStream outByteStream = new ByteArrayOutputStream();
wb.write(outByteStream);
byte [] outArray = outByteStream.toByteArray();
response.setContentType("application/ms-excel");
response.setContentLength(outArray.length);
response.setHeader("Expires:", "0");
response.setHeader("Content-Disposition", "attachment; filename=Demo1.xls");
OutputStream outStream = response.getOutputStream();
outStream.write(outArray);
outStream.flush();
//block2
request.setAttribute("Message", str1);
request.setAttribute("MessageDetails", str2);
request.getRequestDispatcher("/MyFile.jsp").forward(request, response);
Приведенный выше код отправляет файл Excel клиенту, но дает мне исключение:
java.lang.IllegalStateException: Cannot forward after response has been committed
Если я удалюblock1
или жеblock2
сверху код тогда ошибки не даст, но хочу отправить клиентExcel file
и два атрибута, которые я добавил кrequest
объект.
Так что можете отправитьExcel
файл клиенту с помощьюrequest.getRequestDispatcher
? Или есть ли лучший способ сделать это?
Любое предложение будет оценено.
Edit1
Я знаю, почему я получаюIllegalStateException
, но тогда мой вопрос, как я должен отправитьExcelFile
а такжеRequest Attributes
как клиенту?
Edit2
Причина, почему я хочу отправить обаExcel file
а такжеAttributes
клиенту этоMyFile.jsp
имеет который покажет сообщение, отправленное с.
servlet
${Message}
Edit3
Причина, по которой я хочу отправить сообщение клиенту, заключается в том, что я отправляю этоExcel file
в ответ наImport Excel operation
в котором клиент предоставитexcel file
для вставки данных в базу данных, а затем я выделяюexcel rows
который не может быть вставлен из-за дублирования или любых других причин. Поэтому я хочу показать статистику импорта вMessage
клиенту и дать ему копию файла Excel с выделенными строками ошибок.