Добавьте заголовок Content-Disposition: attachment
к ответу сервлета. Таким образом, клиент вынужден открыть диалог Сохранить как .
response.setHeader("Content-Disposition: attachment; filename=image.gif");
Сделайте это до записи любого байта в ответ. Для этого вам не нужен JavaScript на стороне клиента. Просто ссылка или форма, указывающая на сервлет. Клиент не покинет страницу, потому что расположение содержимого не установлено на inline
.
Однако вы все еще зависите от конфигурации клиента по умолчанию, существует ли действие по умолчанию, связанное с Content-Type
вложения, которое будет выполнено немедленно вместо Сохранить как . Например, в Firefox это настраивается с помощью Сервис> Параметры> Приложения . Вы не можете контролировать это со стороны сервера, но вам не следует об этом беспокоиться. Клиент решил сам, чтобы это было так.