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;

 

 

  • 常见应用:

    • 向浏览器输出消息;

    • 下载文件;

      1. 要获取下载文件的路径;

      2. 下载的文件名是什么;

      3. 设置让浏览器支持下下载我们需要的东西;

      4. 获取下载文件的输入流;

      5. 创建缓冲区

      6. 获取OutputStream对象;

      7. 将FileOutputStream流写入到buffer缓冲区;

      8. 使用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下载文件的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程