直接输出JSON对象

@GetMapping("selectMy")
public Mono<Void> selectMy(ServerHttpRequest request, ServerHttpResponse response) {String pageNumber= request.getQueryParams().getFirst("pageNumber");AuthUser authUser= LoginProcess.getCurrentUser(request.getCookies());Map<String,String> result=new HashMap<String,String>(){{put("aa","1");put("bb","21dd");}};return response.writeWith(Flux.create(sink -> {NettyDataBufferFactory nettyDataBufferFactory = new NettyDataBufferFactory(new UnpooledByteBufAllocator(false));try {DataBuffer dataBuffer= nettyDataBufferFactory.wrap(JSON.toJSONString(result).getBytes("utf8"));//DataBuffer dataBuffer= nettyDataBufferFactory.wrap("asdf".getBytes("utf8"));sink.next(dataBuffer);} catch (UnsupportedEncodingException e) {e.printStackTrace();}sink.complete();}));
}

通用方法辅助类封装:


import com.alibaba.fastjson.JSON;
import io.netty.buffer.UnpooledByteBufAllocator;
import org.springframework.core.io.buffer.DataBuffer;
import org.springframework.core.io.buffer.NettyDataBufferFactory;
import org.springframework.http.server.reactive.ServerHttpResponse;
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;import java.io.UnsupportedEncodingException;/*** Created by wanghongqi on 2019/5/11* ServerHttpResponse辅助类*/
public class ServerHttpResponseUtil {/*** JSON输出形式输出对象* @param response* @param object* @return*/public static Mono<Void> writeObjectAsJson(ServerHttpResponse response,Object object){return response.writeWith(Flux.create(sink -> {NettyDataBufferFactory nettyDataBufferFactory = new NettyDataBufferFactory(new UnpooledByteBufAllocator(false));try {DataBuffer dataBuffer= nettyDataBufferFactory.wrap(JSON.toJSONStringWithDateFormat(object,JSON.DEFFAULT_DATE_FORMAT).getBytes("utf8"));//DataBuffer dataBuffer= nettyDataBufferFactory.wrap("asdf".getBytes("utf8"));sink.next(dataBuffer);} catch (UnsupportedEncodingException e) {e.printStackTrace();}sink.complete();}));}/*** html输出* @param response* @param html* @return*/public static Mono<Void> writeHtml(ServerHttpResponse response,String html){return response.writeWith(Flux.create(sink -> {NettyDataBufferFactory nettyDataBufferFactory = new NettyDataBufferFactory(new UnpooledByteBufAllocator(false));try {DataBuffer dataBuffer= nettyDataBufferFactory.wrap(html.getBytes("utf8"));sink.next(dataBuffer);} catch (UnsupportedEncodingException e) {e.printStackTrace();}sink.complete();}));}
}

webflux databuffer输出相关推荐

  1. node.js把前台传来的base64码转成图片存放

    最近项目有个功能,更换用户个人头像,裁剪后上传保存. 裁剪用了cropper.js,裁剪后的图片为base64编码格式,传到node中,进行转换成图片在保存到数据库中,代码如下: var fs = r ...

  2. springboot 使用webflux响应式开发教程(一)

    什么是webFlux 左侧是传统的基于Servlet的Spring Web MVC框架,右侧是5.0版本新引入的基于Reactive Streams的Spring WebFlux框架,从上到下依次是R ...

  3. 使用webflux提升数据导出效率

    为什么80%的码农都做不了架构师?>>>    序 本文主要研究一下如何使用webflux提升数据导出效率 传统导出 @GetMapping("/download-old& ...

  4. Kotlin 使用 Spring WebFlux 实现响应式编程

    Kotlin 使用 Spring WebFlux 实现响应式编程 IBM的研究称,整个人类文明所获得的全部数据中,有90%是过去两年内产生的.在此背景下,包括NoSQL,Hadoop, Spark, ...

  5. Spring Boot 集成 WebFlux 开发 Reactive Web 应用

    Spring Boot 集成 WebFlux 开发 Reactive Web 应用 <Spring Boot 实战开发>-- 基于 Gradle + Kotlin的企业级应用开发最佳实践 ...

  6. Spring Boot 2 快速教程:WebFlux 快速入门(二)

    2019独角兽企业重金招聘Python工程师标准>>> 摘要: 原创出处 https://www.bysocket.com 「公众号:泥瓦匠BYSocket 」欢迎关注和转载,保留摘 ...

  7. Spring Boot 2 快速教程:WebFlux Restful CRUD 实践(三)

    摘要: 原创出处 https://www.bysocket.com 「公众号:泥瓦匠BYSocket 」欢迎关注和转载,保留摘要,谢谢! 这是泥瓦匠的第102篇原创 03:WebFlux Web CR ...

  8. WebFlux基础之响应式编程

    上篇文章,我们简单的了解了WebFlux的一些基础与背景,并通过示例来写了一个demo.我们知道WebFlux是响应式的web框架,其特点之一就是可以通过函数式编程方式配置route.另外究竟什么是响 ...

  9. Spring Boot WebFlux-02——WebFlux Web CRUD 实践

    Spring Boot WebFlux-02--WebFlux Web CRUD 实践 第02课:WebFlux Web CRUD 实践 上一篇基于功能性端点去创建一个简单服务,实现了 Hello.这 ...

最新文章

  1. kafka设计与原理
  2. 【Linux】无法添加用户,报“useradd: cannot open /etc/passwd”问题解决过程记录
  3. hdu4810 Cn中取i异或和
  4. ado filter 多条记录_江苏气动断料锯商家,多条锯_邢台富宇来机械厂
  5. 2016猴年春节有感
  6. 【大数据】获取一篇新闻的全部信息
  7. 网页设置页数/总页数_图书分配问题(分配最小页数)
  8. line vty 0 4 和line vty 5 15 区别
  9. SAM2695 带效果器的低功耗单芯片合成器
  10. C# 替换Word文档中的书签内容【详细步骤】
  11. 向日葵远程分辨率过低解决办法
  12. 恶意代码分析实战Lab3-1
  13. 织梦DedeCms技术资料
  14. HTKbook翻译之第十二章网络、词典及语言模型
  15. 【CyberSecurityLearning 12】数据链路层 及 交换机工作原理与配置
  16. Docker下载和设置代理
  17. AI_综述----图像分割综述
  18. gitlab使用Mirroring repositories远程合并代码到其他仓库
  19. C语言等待一秒,延时函数sleep()
  20. 奥维地图怎么标注文字_如何在奥维地图上准确地告诉别人“我在哪?”

热门文章

  1. 工作155:首页样式调整第二次
  2. 工作150:1、根据后台传值动态显示开关状态及文字说明(0为文字,1为图标)
  3. 前端学习(1614):oracle数据库管理
  4. 前端学习(675):if else if
  5. 第四十期:2019年度十大Web开发趋势
  6. 31.javaweb简介
  7. JavaScript 监听手机端的touch滑动事件(滑动手势)
  8. java容器集合类的区别用法_Java容器笔记(二):不同集合实现类的特点与区别...
  9. git语言包安装_Git分布式版本管理系统快速入门指南
  10. WinForm控件之【LinkLabel】