Java web 封装一个工具类 读取数据响应给浏览器

【Spring Boot 3】【Web】统一封装 HTTP 响应体 本文介绍开发 Spring Boot Web 应用时如何使用统一封装 HTTP 响应体(HTTP Response Body)。拦截带有注解或返回类型为的 Controller 方法,在这些方法执行完成之后且将 HTTP Response Body 封装成统一数据格式;对 HTTP Response Body 执行加密;对 HTTP Response Body 执行编码。supports:确定处理 HTTP Response Body 的范围,首先被执行;:在。 阅读详情
  1. 字节流:用于处理二进制数据或不需要进行字符编码转换的场景。

    • InputStream:用于从输入源(如文件)读取字节数据。
    • OutputStream:用于向输出目标(如文件)写入字节数据。
OutputStream outputStream = null;
FileInputStream inputStream = null;                   
    outputStream = response.getOutputStream();
    inputStream = new FileInputStream(imagePath);

将代码封装一个工具类

代码展示:

public static void responseImg(String imagePath, HttpServletResponse response) throws IOException {
        OutputStream outputStream = null;
        FileInputStream inputStream = null;
        try {
            outputStream = response.getOutputStream();
            inputStream = new FileInputStream(imagePath);
            byte[] buffer = new byte[1024];
            int bytesRead;
            while ((bytesRead = inputStream.read(buffer)) != -1) {
                outputStream.write(buffer, 0, bytesRead);
            }
            response.setContentType(getContentType(imagePath));
            outputStream.flush();
        } finally {
            if (inputStream != null) {
                inputStream.close();
            }
            if (outputStream != null) {
                outputStream.close();
            }
        }
    }

 下面展示示例:

通过:WebServlet注解

@WebServlet("/imgC")

 通过该路径:

 效果展示:

 创建一个HTML文件 并实现点击按钮 切换图片:

HTML代码展示:

 <div id="app">
        <img src="/randomImgC" width="400" height="450">
        <button onclick="location.reload()">换一张图片</button>
  </div>

给button按钮设置一个点击事件

后端代码块:

protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

        String filename[] = new File("D:\\mysql表\\beauty\\").list();

        String imgName = filename[(int) Math.floor(Math.random() * filename.length)];
        ImgUtil.responseImg("D:\\mysql表\\beauty\\" + imgName, resp);
    }

效果展示:

访问HTML地址:   http://localhost:8081/beauty.html

 

 

5G移动性管理实战:手把手教你配置NR小区重选参数(附避坑指南) 本文深入解析5G网络移动性管理中的小区重选参数配置实战。通过拆解小区选择与重选的核心机制,结合真实案例,手把手指导如何配置NR小区重选参数,并分享常见避坑指南,帮助工程师优化网络性能,提升用户移动体验。 阅读详情

相关推荐

非线性功率放大器对QAM传输BER性能的影响及补偿

1、线性功率放大器对传输性能的影响 为表述非线性功率放大器对传输性能的影响,以Saleh模型进行观察。具体来说,在QAM调制器之后添加一个非线性模块,使调制后的波形经历AM / AM和AM / PM转换。 在Saleh模型中,转换用四个参数表示,即AM / AM转换为????a和????a,AM / PM转换为????p和????p。 在Saleh模型中,AM / AM和AM / PM方程以输入电压u的大小表示为: 式中,FAM / AM是AM / AM转换的输出电压与输入电压的关系,而FAM

太阳帅帅的博客 2081

Java — InputStream.read(),response.getOutputStream(),OutputStream().write【IO流】

一丶 FileInputStream类: Class FileInputStream java.lang.Object java.io.InputStream java.io.FileInputStream All Implemented Interfaces: Closeable , AutoCloseable public class FileInputStream extends Input...

qq_27494201的博客 3190

Yolov5实现道路裂缝检测

Yolov5实现道路裂缝检测 参考代码链接 Github代码链接 基于Pytorch的Yolov5道路裂缝检测程序运行说明。大家可以结合我的说明和原文说明使用,有问题欢迎询问。 文章目录Yolov5实现道路裂缝检测环境要求测试训练自己的数据集1.创建dataset.yaml文件2.创建标签文件3.组织文件路径4.选择模型5.开始训练 环境要求 Python 3.8或之后的版本 还要安装requirements.txt文件中所有依赖包,包括1.7及以上版本的torch $ pip install -r req

qq_26751379的博客 2万+

java 读取浏览器_JAVA读取文件流,设置浏览器下载或直接预览操作

最近项目需要在浏览器中通过URL预览图片。但发现浏览器始终默认下载,而不是预览。研究了一下,发现了问题:// 设置response的Header,注意这句,如果开启,默认浏览器会进行下载操作,如果注释掉,浏览器会默认预览。 response.addHeader("Content-Disposition", "attachment;filename=" + FileUtil.getOriginalF...

weixin_29374181的博客 1376

Maxwell参数化建模

MAXWELL 2019 R3 参数化建模 参数化建模的优势 所谓参数化,就是在电机本体设计中涉及到的各类参数变量化,而每个变量之间又存在一定的制约关系,这样只需修改其中某个或者某些变量就可以做到对整个电机模型合理地改动。 参数化举例 以表贴式电机为例,先画电机定子,如上所示,依次进行后会弹出下面的选项框 上图就是描述电机尺寸的各类参数,接下来进行参数化。 回车ENTER,并给变量ds赋值。 赋值好后,回车ENTER 左下角properties里面就有我们新建立的变量ds了。 继续将剩余的参数

qq_41387280的博客 1万+

Win10家庭版没有Hyper-V?教你一招轻松解决(含避坑指南)

本文详细介绍了在Win10家庭版中启用Hyper-V的完整实战指南。通过DISM工具链绕过系统版本限制,无需重装系统即可完整启用所有Hyper-V组件,适用于开发者测试多系统环境和安全隔离应用场景。文章包含详细操作步骤、常见问题解决方案及性能优化配置,帮助用户轻松解决Win10家庭版没有Hyper-V的问题。

weixin_29239661的博客 496

多线程并行下载文件到浏览器

每个线程不能共用一个输入流,目前试过是不好控制,会导致下载的数据漏掉一部分。我的做法是在每个线程里面都创建要下载的文件输入流,每个线程的输入流是一样的。现在想要通过多线程并行下载看能不能提升,将文件拆分,每个线程负责下载一部分文件到输出流。前面记录到从FTP服务器下载到浏览器,使用缓冲流也没有提升速度。

weixin_52938172的博客 287

中小团队必看!用Harbor+Jenkins打造轻量级K3S交付流水线(含成本优化方案)

本文为中小团队详细介绍了如何利用K3S、Harbor与Jenkins构建一套高性价比的自动化交付流水线。内容涵盖单节点K3S集群的效能配置、Harbor镜像仓库的磁盘空间优化、Jenkins共享库实现流水线复用,并提供了完整的实战案例与成本优化方案,帮助团队以较低成本快速落地高效的自动化部署。

weixin_29223603的博客 504

java实现浏览器多线程下载文件

浏览器请求头说明 HTTP 请求头 Range 请求资源的部分内容(不包括响应头的大小),单位是byte,即字节,从0开始. 如果服务器能够正常响应的话,服务器会返回 206 Partial Content 的状态码及说明. 如果不能处理这种Range的话,就会返回整个资源以及响应状态码为 200 OK . (这个要注意,要分段下载时,要先判断这个) Range 请求头格式 Range: bytes=start-end Range: bytes=10- :第10个字节及最后个字节的数据 Range: by

qq_39164154的博客 897

基于STM32、HAL库的IP2736U_EF快充协议芯片简介及驱动程序设计

@param connected: 连接状态指针 (1=已连接, 0=未连接)= 0x2736) // 检查厂商ID。* @param hip: IP2736U句柄指针。* @param hip: IP2736U句柄指针。* @param hip: IP2736U句柄指针。* @param hip: IP2736U句柄指针。* @param hip: IP2736U句柄指针。* @param hip: IP2736U句柄指针。* @param hip: IP2736U句柄指针。

corlin6688的博客 430

《HiVT: Hierarchical Vector Transformer for Multi-Agent Motion Prediction》论文阅读之HiVT

目录摘要1.介绍2.相关工作3.方法3.1. 总体框架3.2 场景表示 3.3 分层向量Transformer3.3.1 局部编码器3.3.2 全局交互模块3.3.3 多模态未来解码器3.4 训练4.实验4.1 实验设置4.2 消融研究 4.3. 结果5.结论 准确预测周围交通参与者的未来运动对于自动驾驶车辆的安全至关重要。最近,矢量化方法由于能够捕捉交通场景中的复杂交互而在运动预测领域占据主导地位。然而,现有的方法忽略了问题的对称性并且受到昂贵的计算成本的影响,面临着在不牺牲预测性能的情况

Gavinmiaoc的博客 3340

使用JAVA实现读取文件流并设置浏览器下载或直接预览

/不同的文件类型,contentType不一样,比如图片一般是image/jpeg、image/png等。

sig321的专栏 996

JAVA WEB开发中REST接口统一返回数据工具类封装

在JAVA WEB项目开发过程中,统一的API数据返回很常见,这里总结一下Rest接口里统一的API数据返回格式和Rpc接口里统一的API数据返回格式。

Thinkingcao的专栏 4142

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

java请求响应浏览器一个下载文件

首先html不能使用ajax提交,得使用form表单提交,要么使用location.href="";这种方式提交 <%-- Created by IntelliJ IDEA. User: kxj Date: 2019/9/11 Time: 17:40 To change this template use File | Settings | File Templat...

kxj19980524的博客 1911

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

Java通用接口响应封装类

Java接口响应封装类 Web开发中,前后分离是个趋势,现在大部分公司研发部门已经在走前后分离的路子了,前后分离开发各司其职能够有效的提高工作效率和开发质量。 REST接口会返回各种各样的数据,如果对接口的格式不加约束,很容易造成混乱。 在实际项目中,一般会把结果放在一个封装类中,封装类中包含http状态值,状态消息,以及实际的数据。 个人总结一下工作中用到的接口响应类。???? 状态枚举,接口响...

敲一些有意思的代码,做一些有意义的事儿 4万+

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Java.控制层.响应工具类.

Java.控制层.响应工具类. 1 package cn.com.spdbccc.cds.index.web.base; 2 3 public class ApiResponse { 4 5 private int code; 6 private String message; 7 private Object data; ...

a281412785的博客 505

JAVA Web 统一封装响应体[@ControllerAdvice]

JAVA Web通过ResponseBodyAdvice 拦截Controller统一封装响应体 封装返回数据 @ControllerAdvice public class GlobalResponseBodyAdviceHandle implements ResponseBodyAdvice<Object> { /** * 是否对指定接口生效 * ...

LionHerding的博客 879

Springboot封装的好的发送post请求的工具类

工具类代码: public static Response sendPostRequest(String url, Map&amp;lt;String, Object&amp;gt; params){ RestTemplate client = new RestTemplate(); HttpHeaders headers = new HttpHeaders()...

weixin_42209881的博客 7623

java实现web服务器_Java 实现一个简单的web服务器

在日常的开发中,我们用过很多开源的web服务器,例如tomcat、apache等等。现在我们自己实现一个简单的web服务器,基本的功能就是用户点击要访问的资源,服务器将资源发送到客户端的浏览器。web服务基于的是HTTP协议,用户在浏览器的地址栏输入要访问的地址,服务器如何得到该地址是个关键。先看下一般的HTTP请求和响应报文的一般格式:HTTP 请求报文 HTTP 响应报文 二 socket类 ...

weixin_29001683的博客 2530

restTemplate封装工具类

一. 前言 : 小熙前端时间忙于分布式系统的开发,在远程调用的时候,有用到restTempalte的使用自己封装了一个使用案例。后来,由于系统慢慢的整合一些东西,restTempalte埋的坑太多,所以后续的有去用到feign,此案例还是建议相对自己的项目去抉择吧。 二. 视图: 展示图: 三. 依赖 : 有一些特殊的依赖,标注下(也可以不导入,可以手动实现相关,不过比较麻烦) 糊涂工具坐标 <!-- 糊涂工具类 --> <dependency>

人生到处知何似,应似飞鸿踏雪泥。 5963

项目实训-后端工具类封装

后端工具封装类

weixin_62772983的博客 1023

HTTP工具类封装与http请求响应

在Java web系统中经常需要与外部接口进行对接,比较多的方式就是是http的方式。在springboot中,我们可以直接使用封装的feign如:我们去请求微信的接口,定义一个client客户端,使用feign框架去请求就可以。但是也有很多系统没有使用feign的框架,那就需要使用http工具类了。

JAVA领域优质创作者,基于分片网络查询方法专利发明者。 1593

利用Java Socket编写一个简单的Web服务器

1-2 利用Java Socket编写一个简单的Web服务器,具体如下: (1)、使用 ServerSocket 监听某一端口,然后等待连接获取 Socket对象; (2)、创建一个类 HttpServer 继承 java.lang.Thread 类,重写 run()方法,执行浏览器请求; (3)、获得浏览器请求,解析资源文件路径; (4)、读取资源文件,响应给浏览器; (5)、浏览器地址栏输入: http://localhost:8000/index.html; (6)、效果如下: 代码: 启动类 pu

Jackyyl729的博客 7605

SpringBoot 统一封装响应数据

在Spring Boot应用程序中,统一封装响应数据是一种常见的做法,它有助于提供一致的API响应格式,使前端开发更加容易,并且可以简化错误处理和日志记录。

weixin_49845828的博客 1375

Java后端Http请求其他后端接口封装工具类

Http请求工具类:包含,get,put,post(delete请求与get请求类似) package com.construn.vehicleservice.util; import java.io.IOException; import java.net.URISyntaxException; import java.nio.charset.Charset; import java.ut...

邪神大人 2628
上一篇: 掌握Javaweb 开发 实现前后端交互
下一篇: 前后端分离开发 axios请求后端接口数据 渲染页面
小 zi
博客等级 码龄5年 3粉丝 9原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值