JavaWeb流式传输速查宝典

目录

[🌐 Java Web 流式传输查询总表(Browser ⇄ Server)](#🌐 Java Web 流式传输查询总表(Browser ⇄ Server))

[🔧 常用 I/O 基类与方法汇总](#🔧 常用 I/O 基类与方法汇总)

[🧭 Web 应用中流的典型组合](#🧭 Web 应用中流的典型组合)

[⚙️ 补充:流的桥接关系(内部机制)](#⚙️ 补充:流的桥接关系(内部机制))

[🚀 企业实战建议](#🚀 企业实战建议)


如下是一个系统化的 Java Web 流式传输查询表------既能看出浏览器与服务器之间的数据流动方向,又能快速查到常用类和方法。下面这张表就是"流式传输速查宝典",涵盖了字节流与字符流两大体系。


🌐 Java Web 流式传输查询总表(Browser ⇄ Server)

方向 流类型 Servlet 方法 Java 类 常见方法 用途说明
浏览器 → 服务器 字节输入流 req.getInputStream() ServletInputStream(继承自 InputStream read(byte[])available()close() 用于读取浏览器上传的二进制数据(文件、图片、视频等)。
浏览器 → 服务器 字符输入流 req.getReader() BufferedReader(封装 InputStreamReader readLine()read()ready()close() 用于读取浏览器提交的文本(JSON、表单、XML 等)。
服务器 → 浏览器 字节输出流 resp.getOutputStream() ServletOutputStream(继承自 OutputStream write(byte[])flush()close() 用于向浏览器发送二进制数据(文件下载、图片返回等)。
服务器 → 浏览器 字符输出流 resp.getWriter() PrintWriter(封装 OutputStreamWriter write(String)println()flush()close() 用于返回 HTML、JSON、文本等内容给浏览器。

🔧 常用 I/O 基类与方法汇总

类名 方向 类型 常用方法 说明
InputStream 输入 字节流 read()read(byte[])close() 所有字节输入流的基类。
FileInputStream 输入 字节流 同上 从文件读取数据。
BufferedInputStream 输入 字节流 同上 为输入流添加缓冲,提高性能。
OutputStream 输出 字节流 write()write(byte[])flush()close() 所有字节输出流的基类。
FileOutputStream 输出 字节流 同上 写入文件。
BufferedOutputStream 输出 字节流 同上 为输出流添加缓冲,提高性能。
Reader 输入 字符流 read()read(char[])close() 所有字符输入流的基类。
InputStreamReader 输入 字符流 同上 将字节流转为字符流,可指定编码。
BufferedReader 输入 字符流 readLine()ready()close() 可按行读取文本,提高性能。
Writer 输出 字符流 write()flush()close() 所有字符输出流的基类。
OutputStreamWriter 输出 字符流 同上 将字符流转为字节流,可指定编码。
BufferedWriter 输出 字符流 write()newLine()flush()close() 缓冲字符输出流。
PrintWriter 输出 字符流 print()println()write()flush()close() 支持打印文本、对象,常用于 Web 输出。

🧭 Web 应用中流的典型组合

功能场景 请求流 响应流 传输类型 说明
上传文件 req.getInputStream() 字节流 浏览器把文件二进制内容直接上传。
上传 JSON 数据 req.getReader() 字符流 浏览器发送 JSON 文本。
下载文件 resp.getOutputStream() 字节流 服务器输出文件,浏览器提示下载。
输出网页 resp.getWriter() 字符流 输出 HTML 页面或纯文本响应。
输出 JSON resp.getWriter() 字符流 服务器返回 JSON 数据,前端 AJAX 获取。

⚙️ 补充:流的桥接关系(内部机制)

在 Servlet 容器中:

复制代码
浏览器 <==> TCP Socket <==> InputStream / OutputStream
                    ↓                    ↓
                 Reader / Writer (封装层)
  • Reader 基于 InputStreamReader:字节 → 字符

  • Writer 基于 OutputStreamWriter:字符 → 字节

  • 这些转换依赖编码集(如 UTF-8、GBK)。


🚀 企业实战建议

  1. 二进制用流,文本用 Writer/Reader。

  2. 总是设置编码:

    复制代码
    req.setCharacterEncoding("UTF-8");
    resp.setContentType("application/json;charset=UTF-8");
  3. 记得关闭流(可用 try-with-resources 自动管理)。

  4. 大文件传输使用缓冲流 (如 BufferedInputStreamBufferedOutputStream)。

  5. 不要混用流类型getWriter()getOutputStream() 不能同时使用。

相关推荐
皮皮林5518 小时前
Java性能调优黑科技!1行代码实现毫秒级耗时追踪,效率飙升300%!
java
冰_河8 小时前
QPS从300到3100:我靠一行代码让接口性能暴涨10倍,系统性能原地起飞!!
java·后端·性能优化
桦说编程11 小时前
从 ForkJoinPool 的 Compensate 看并发框架的线程补偿思想
java·后端·源码阅读
躺平大鹅13 小时前
Java面向对象入门(类与对象,新手秒懂)
java
初次攀爬者13 小时前
RocketMQ在Spring Boot上的基础使用
java·spring boot·rocketmq
花花无缺14 小时前
搞懂@Autowired 与@Resuorce
java·spring boot·后端
Derek_Smart15 小时前
从一次 OOM 事故说起:打造生产级的 JVM 健康检查组件
java·jvm·spring boot
NE_STOP16 小时前
MyBatis-mybatis入门与增删改查
java
孟陬19 小时前
国外技术周刊 #1:Paul Graham 重新分享最受欢迎的文章《创作者的品味》、本周被划线最多 YouTube《如何在 19 分钟内学会 AI》、为何我不
java·前端·后端