1.准备一张图片
2.编写Download类
public class Download extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//1.获取要下载的文件名
String downloadFileName="1.jpg";
//2.读取要下载的文件内容(通过servletContext对象可以读取)
ServletContext servletContext=getServletContext();
//获取要下载的文件类型
String mimeType = servletContext.getMimeType("/file/" + downloadFileName);
System.out.println("下载的文件类型:"+mimeType);
//4.在回传前,通过响应头告诉客户端返回的数据类型
resp.setContentType(mimeType);
//5.还要告诉客户端收到的数据是用于下载使用(还是使用响应头)
//Content-Disposition 响应头,表示收到的数据怎么处理
//attachment 表示附件,表示下载使用
//filename= 表示指定下载的文件名 url编码是把汉字转换成为%xx%xx的格式 设置名字中文编码
resp.setHeader("Content-Disposition","attachment; filename="+ URLEncoder.encode("动漫.jpg","UTF-8"));
//斜杠表示被服务器解析表示地址http://ip:prot/工程名/映射到代码的web目录
InputStream resourceAsStream=servletContext.getResourceAsStream("/file/"+downloadFileName);
//获取响应的输出流
OutputStream outputStream=resp.getOutputStream();
//3.把下载的文件内容回传给客户端
//读取输入流中全部的数据,复制给输出流,输出给客户端
IOUtils.copy(resourceAsStream,outputStream);
}
}
3.配置servlet.xml
<servlet>
<servlet-name>Download</servlet-name>
<servlet-class>com.example.servlet.Download</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Download</servlet-name>
<url-pattern>/download</url-pattern>
</servlet-mapping>