一. 使用Tomcat默认的servlet去下载静态资源
1. 直接以超链接的方式下载, 不写任何代码, 就能够下载东西下来。
<a href="Download/shake.wav">shake.wav</a><br/>
<a href="Download/logo.png">logo.png</a><br/>
<a href="Download/apache-tomcat7.zip">apache-tomcat7.zip</a>
2. Tomcat里面有一个默认的。这个DefaultServlet 专门用于处理放在Tomcat服务器上的静态资源。
3. 新建一个Download的Web工程
4. 在WebContent下新建一个Download的目录, 放入几个文件
5. 新建一个index.html
6. 编写index.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title>下载</title>
</head>
<body>
<a href="Download/shake.wav">shake.wav</a><br/>
<a href="Download/logo.png">logo.png</a><br/>
<a href="Download/apache-tomcat7.zip">apache-tomcat7.zip</a><br/>
</body>
</html>
7. 部署运行
8. 点击shake.wav, chrome浏览器在网页中打开了它
9. 点击logo.png, chrome浏览器在网页中打开了它
10. 点击apache-tomcat7.zip, 进行下载
二. 使用自己的Servlet去下载文件, 而不是展示
1. 编写index.html
2. 新建一个Download.java类
3. 编写Download.java类
package com.lywgames.myservlet;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class Download extends HttpServlet {
private static final long serialVersionUID = 1L;
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// 获取文件名字
String filename = req.getParameter("filename");
// 让浏览器收到这份资源的时候, 以下载的方式提醒用户, 而不是直接展示。
resp.setHeader("Content-Disposition", "attachment; filename="+filename);
// 获取这个文件在Tomcat里面的绝对路径地址
String path = getServletContext().getRealPath("Download/" + filename);
InputStream is = new FileInputStream(path);
OutputStream os = resp.getOutputStream();
int len = 0 ;
byte[] buffer = new byte[1024];
while((len = is.read(buffer)) != -1){
os.write(buffer, 0, len);
}
os.close();
is.close();
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req, resp);
}
}
4. 编写web.xml
5. 部署运行项目, png和wav文件也可以下载