Если ресурс статический, просто поместите его в общедоступный веб-контент (там, где также находятся ваши файлы JSP / HTML / CSS / JS / etc) и включите ссылку на него в свой JSP.
<a href="file.ext">download</a>
Контейнер сервлетов будет беспокоиться о настройке правильных заголовков HTTP-ответов.
Если ресурс динамический, создайте сервлет, который каким-то образом получает InputStream
содержимого (new FileInputStream
, resultSet.getBinaryStream()
и т. Д. И т. Д.) И записывает его в OutputStream
ответа, по крайней мере, в заголовки ответа Content-Type
и Content-Disposition
.Наконец, просто ссылка на этот сервлет в вашем JSP.
<a href="fileservlet/file.ext">download</a>
Вы можете найти базовый пример в этой статье .
Заголовок Content-Type
информирует клиента отип содержимого файла, чтобы он знал, какое приложение он должен использовать, чтобы открыть его.Заголовок Content-Disposition
сообщает клиенту, что с ним делать, отображая его в строке или сохраняя в виде вложения.