Response下载文件
web服务器收到客户端的http请求,分别创建一个代表请求的HttpServletRequest对象,一个代表响应的httpServletResponse。
1、简单分类
向浏览器发送数据的方法
ServletoutputStream getOutputStream() throws IOException;
PrintWriter getWriter() throws IOException;
向浏览器发送响应头的方法
void setStatus(int var1);
2、常见应用
1、向浏览器输出消息
2、下载文件
1、获取下载文件路径
2、文件名
3、想办法浏览器能支持下载我们需要的东西
4、获取下载文件的输入流
5、创建缓冲区
6.获取outputStream对象
7、将fileoutStream流写入缓冲区
8、使用OutputStream将缓冲区数据输出到客户端
public class FileServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//1、获取要下载文件的路径
String realPath=this.getServletContext().getRealPath("/7.png");
System.out.println("下载文件路径为:"+realPath);
//2、下载的文件名是
String fileName=realPath.substring(realPath.lastIndexOf("\\")+1);
//web下载文件的头信息
//3、设置让浏览器可以支持下载我们需要的东西
resp.setHeader("Content-Disposition","attachment;filename="+ URLEncoder.encode(fileName,"UTF-8"));
//4、获取下载文件的输入流
FileInputStream in=new FileInputStream(realPath);
//5、创建缓冲区
int len=0;
byte[] buffer=new byte[1024];
//6、获取outputStream对象
ServletOutputStream out=resp.getOutputStream();
//7、将fileoutStream流写入到buffer缓冲区,使用outputStream将缓冲区数据输出到客户端
while ((len=in.read(buffer))>0){
out.write(buffer,0,len);
}
in.close();
out.close();
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req, resp);
}
}