1.登录成功后,完成文件的下载.
基本操作和14天笔记第一题一样
[1]
Insert title here
文件下载的列表页面
<h3>手动编码的方式下载</h3>
<a href="/day15/DownloadServlet1?filename=ooo.txt">ooo.txt</br></a>
<a href="/day15/DownloadServlet1?filename=ooo.zip">ooo.zip</br></a>
<a href="/day15/DownloadServlet1?filename=Dog123.jpg">Dog123.jpg</a>
[2]
package com.itheima_download;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class DownloadServlet1 extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//1.获取请求参数
String filename = request.getParameter("filename");
//2.完成文件下载 【两头一流】
//2.1 设置Content-type响应头(MIME类型) 【ServletContext可以完成Mime类型】
ServletContext context = getServletContext();
String mimeType = context.getMimeType(filename);
response.setHeader("Content-type", mimeType);
//2.2 设置Content-Disposition文件下载响应头
response.setHeader("Content-Disposition", "attachment;filename="+filename);
//2.3获取输入流(读取服务器对象的文件)
InputStream is = context.getResourceAsStream("/download/"+filename);
//3.获取输出流
OutputStream os = response.getOutputStream();
int len = 0;
byte[] by = new byte[1024];
while((len = is.read(by))!= -1){
os.write(by, 0, len);
}
is.close(); //响应流os可以不用关,因为一旦做出响应后,就自动关闭
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request,response);
}
}