设置流 相关的坐标 — 实现流的复制(将输入流【本地文件先输入到内存】 输入到内容,然后将该流输出到浏览器)
    image.png
    image.png

    1. package com.itheima.web.reponse;
    2. import org.apache.commons.io.IOUtils;
    3. import javax.servlet.ServletException;
    4. import javax.servlet.ServletOutputStream;
    5. import javax.servlet.annotation.WebServlet;
    6. import javax.servlet.http.HttpServlet;
    7. import javax.servlet.http.HttpServletRequest;
    8. import javax.servlet.http.HttpServletResponse;
    9. import java.io.FileInputStream;
    10. import java.io.IOException;
    11. import java.io.PrintWriter;
    12. /**
    13. * 响应字节数据: 设置字节数据的响应体
    14. */
    15. @WebServlet("/resp4")
    16. public class ResponseDemo4 extends HttpServlet {
    17. @Override
    18. protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    19. // 1. 读取文件(用file类的输入流)
    20. FileInputStream fis = new FileInputStream("C:\\Users\\aufs\\Desktop\\1.jpg");
    21. // 2. 获取response字节输出流
    22. ServletOutputStream os = resp.getOutputStream(); // 这个输出流是输出到浏览器页面中
    23. // 3. 完成流的copy
    24. // byte[] buff = new byte[1024]; // 定义一个桶,桶的大小为1个Kb
    25. // int len = 0;
    26. // while ((len = fis.read(buff)) != -1){
    27. // os.write(buff,0,len); // 读到多少,写多少
    28. // }
    29. IOUtils.copy(fis,os); // 将输入流和输出流传入进去
    30. // 关闭输入流(输入流由服务器来关)
    31. fis.close();
    32. }
    33. @Override
    34. protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    35. this.doGet(req,resp);
    36. }
    37. }