javaweb学习10:Response下载文件
2022/3/26 20:22:35
本文主要是介绍javaweb学习10:Response下载文件,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
javaweb学习10:Response下载文件
-
HttpServletResponse对象:
-
web服务器接收到客户端的HTTP请求,会针对这个请求,分别创建一个代表请求的HttpServletRequest对象,一个代表响应的HttpServletResponse对象;
-
如果要获取我们客户端请求过来的参数:找HttpServletRequest;
-
如果要给客户端响应一些信息:找HttpServletResponse;
-
-
简单分类:
-
负责向浏览器发送数据的方法:
ServletOutputStream getOutputStream() throws IOException; PrintWriter getWriter() throws IOException;
-
负责向浏览器发送响应头的方法:
void setCharacterEncoding(String var1); void setContentLength(int var1); void setContentLengthLong(long var1); void setContentType(String var1); void setDateHeader(String var1, long var2); void addDateHeader(String var1, long var2); void setHeader(String var1, String var2); void addHeader(String var1, String var2); void setIntHeader(String var1, int var2); void addIntHeader(String var1, int var2);
-
响应的状态码:
int SC_OK = 200; int SC_NOT_FOUND = 404; int SC_INTERNAL_SERVER_ERROR = 500; int SC_BAD_GATEWAY = 502;
-
-
常见应用:
-
向浏览器输出消息;
-
下载文件;
-
要获取下载文件的路径;
-
下载的文件名是什么;
-
设置让浏览器支持下下载我们需要的东西;
-
获取下载文件的输入流;
-
创建缓冲区
-
获取OutputStream对象;
-
将FileOutputStream流写入到buffer缓冲区;
-
使用OutputStream将缓冲区中的数据输出到客户端;
-
-
-
代码案例:
/** * 下载文件 */ public class FileServlet extends HttpServlet { /** * 1. 要获取下载文件的路径; * 2. 下载的文件名是什么; * 3. 设置让浏览器支持下下载我们需要的东西; * 4. 获取下载文件的输入流; * 5. 创建缓冲区 * 6. 获取OutputStream对象; * 7. 将FileOutputStream流写入到buffer缓冲区; * 8. 使用OutputStream将缓冲区中的数据输出到客户端; * * @param req * @param resp * @throws ServletException * @throws IOException */ @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { //1. 要获取下载文件的路径; //String realPath = this.getServletContext().getRealPath("/1.png"); String realPath = "D:\\demo\\1.PNG"; System.out.println("下载文件的路径;"+realPath); //2. 下载的文件名是什么; String fileName = realPath.substring(realPath.lastIndexOf("//") + 1); //3. 设置让浏览器支持下载我们需要的东西 //中文文件名需要使用URLEncoder.encode()编码,否则有可能乱码 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. 将FileOutputStream流写入到buffer缓冲区; //8. 使用OutputStream将缓冲区中的数据输出到客户端; while ((len=in.read(buffer))!=-1){ out.write(buffer,0,len); } out.close(); in.close(); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { doGet(req, resp); } }
这篇关于javaweb学习10:Response下载文件的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23Springboot应用的多环境打包入门
- 2024-11-23Springboot应用的生产发布入门教程
- 2024-11-23Python编程入门指南
- 2024-11-23Java创业入门:从零开始的编程之旅
- 2024-11-23Java创业入门:新手必读的Java编程与创业指南
- 2024-11-23Java对接阿里云智能语音服务入门详解
- 2024-11-23Java对接阿里云智能语音服务入门教程
- 2024-11-23JAVA对接阿里云智能语音服务入门教程
- 2024-11-23Java副业入门:初学者的简单教程
- 2024-11-23JAVA副业入门:初学者的实战指南