#java #http #spring-mvc #servlets
#java #http #spring-mvc #сервлеты
Вопрос:
Я создаю большой отчет CSV в своей службе Spring. Я использую OpenCSV для генерации. Это выглядит так:
CSVWriter writer = new CSVWriter(printWriter);
for (.....) {
writer.writeNext(row.toArray(new String[0]));
}
Теперь я перехожу HttpServletResponse response.getWriter()
к CSVWriter
, и он CSVWriter
немедленно записывает в ответ. Но у меня есть сомнения. Правильный ли этот подход? Я имею в виду немедленное создание отчета для HTTP-ответа.
Я сделал это, потому что не хотел создавать временный файл на сервере.
Комментарии:
1. Почему бы и нет, если другого выбора нет? Если я не ошибаюсь, единственным узким местом здесь является клиент, который медленно загружает ответ (и вы можете решить обнаруживать и прерывать медленные соединения; не уверен в асинхронных сервлетах здесь) для этого не потребуется дисковое пространство. Кроме того, генерация отчетов может быть (очень) тяжелой операцией, поэтому вы также можете подумать о создании полного отчета и сохранить его где-нибудь, указав предварительный URL-адрес для последующего доступа к отчету (даже несколько раз), затем истечь и удалить его (все это делается простым веб-интерфейсом «только для доступа»сервис).