文章目录
- @[TOC](文章目录)
- response说明
- 一、response文件下载
- 二、待补充。。。
文章目录
- @[TOC](文章目录)
- response说明
- 一、response文件下载
- 二、待补充。。。
response说明
response是指HttpServletResponse,该响应有很多的应用,比如像浏览器输出消息,下载文件,实现验证码等。
一、response文件下载
1.创建一个javaweb的项目。
2.实例类FileServlet的具体实现。
import java.net.URLEncoder;
public class FileServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// 1.获取要下载文件的路径 realPath:绝对路径
String realPath = "E:\\Software\\IDEA\\javaweb-02-servlet\\response\\src\\main\\resources\\aa.webp";
System.out.println("文件下载的路径:" + realPath);
// 2.下载的文件名
String fileName = realPath.substring(realPath.lastIndexOf("\\") + 1);
// 3.设置浏览器能够支持下载我们需要的东西
// 如果想让网站能下载东西,需要搜一个下载文件的一个头。
// resp.setHeader("Content-disposition", "attachment;filename" + fileName);
resp.setHeader("Content-disposition", "attachment;filename="+ URLEncoder.encode(fileName,"UTF-8"));
// 4.获取下载文件的输入流。
FileInputStream fis = new FileInputStream(realPath);
// 5.创建缓冲区
// 6.获取OutputStream对象
// 7.将FileOutputStream流写入到缓冲区,使用OutputStream将缓冲区中的数据输出到客户端。
ServletOutputStream oos = resp.getOutputStream();
byte[] buf = new byte[1024];
int len = 0;
while ((len = fis.read(buf)) > 0) {
oos.write(buf, 0, len);
}
oos.close();
fis.close();
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req, resp);
}
}
3.配置web.xml文件及tomcat服务器。
4.启动服务。
5.回顾总结
- (5.1)思路分析:
- 1.获取文件输入流
- 2.获取web的响应的输出流
- 3.将输入流写入到输出流,进而发给客户端。
- (5.2)注意实项:
- 1.下载文件名
String fileName = realPath.substring(realPath.lastIndexOf("\\") + 1);
- 2.下载文件的头
resp.setHeader("Content-disposition", "attachment;filename" + fileName);
- 3.相关搜索