如果资源是静态的,只需将其放在公共webcontent(JSP/HTML/CSS/JS/etc文件也在那里),并在JSP中包含指向它的链接.
<a href="file.ext">download</a>
Run Code Online (Sandbox Code Playgroud)
servletcontainer将担心设置正确的HTTP响应头.
如果资源是动态的,创建用于获得本一个servlet InputStream的内容的某种方式(new FileInputStream,resultSet.getBinaryStream(),etc..etc ..),并将其写入到OutputStream至少沿着所述响应的Content-Type和Content-Disposition响应标头.最后,只需链接到JSP中的servlet即可.
<a href="fileservlet/file.ext">download</a>
Run Code Online (Sandbox Code Playgroud)
您可以在本文中找到一个基本示例.
在Content-Type这样它就知道应该使用什么应用程序打开它头通知有关内容类型的文件的客户端.该Content-Disposition头通知客户端做什么用的呢,内联显示它或者保存为附件.