HttpServletResponse
web服务器接收到客户端的HTTP请求,针对这个请求,分别创建一个代表请求的HttpServletRequest
对象,代表响应一个HttpServletResponse
;
- 如果要获取客户端请求过来的参数:找
HttpServletRequest
- 如果要响应客户端消息:找
HttpServletResponse
常见应用
- 向浏览器输出消息
(ServletContext context = this.getServletContext())
- 下载文件
- 要获取下载文件的路径
- 下载的文件名
- 设置浏览器能够支持我们所下载的东西
- 获取下载文件的输入流
- 创建缓冲区
- 获取
OutputStream
对象 - 将
FileOutputStream
流写入到buffer缓存区 - 使用
OutputStream
将缓冲区中的数据输出到客户端
//1.要获取下载的文件路径
String realPath = "D:\\IDEAworkplace\\response\\src\\main\\resources\\1.jpg";
//2.获取下载的文件名
String fileName = realPath.substring(realPath.lastIndexOf("\\") + 1);
//3.设置浏览器(Content-Disposition)支持文件下载
resp.setHeader("Content-Disposition","attachment;filename="+fileName);
//4.获取下载文件的输入流
FileInputStream fis = new FileInputStream(realPath);
//5.创建缓存区
int len=0;
byte[] buffer = new byte[1024];
//6.获取OutputStream对象
ServletOutputStream outputStream = resp.getOutputStream();
//7.将FileOutStream流写入到buffer缓存区
while((len=fis.read(buffer))!=-1){
outputStream.write(buffer,0,len);
}
//关闭流
outputStream.close();
fis.close();
注意事项
- 首先要注意自己的文件路径是否写对了,如果是在IDEA内搭建Maven项目,文件路径应该在target对应的文件夹内
- attachment;filename注意中间是分号而不是冒号
- 文件名字包含中文的,需要进行文件名的转码