У меня есть сервлет, который создает диаграмму jfree. По умолчанию он возвращает кодировку передачи как фрагментированную. Но я должен установить Content-Length в заголовке ответа.
final JFreeChart chart = ChartController.createChart();
final int chartWidth = ChartUtils.calculateWidth(request);
final int chartHeight = ChartHelper.getQuickViewChartHeight();
final ServletOutputStream out = response.getOutputStream();
response.setContentType("image/png");
ChartUtilities.writeChartAsPNG(out, chart, chartWidth, chartHeight);





Как было предложено здесь, не имеет смысла устанавливать заголовок длины содержимого. и также использует кодирование передачи по частям. В любом случае, как обрисовано в общих чертах здесь, вы можете использовать ChartUtilities.encode() для определения байтовой длины массива закодированных изображений:
byte[] b = ChartUtilities.encode(chart.createBufferedImage(chartWidth, chartHeight));
int imageLength = b.length;
Позже вы можете write() закодированное изображение в выходной поток:
out.write(b);