отправить файл 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 с выделенными строками ошибок.

Ответы на вопрос(1)

Ваш ответ на вопрос