Springrequest.getInputStream()或request.getReader()只能取一次

编程

也是个蛋疼的故事.

Springboot这种框架(包括类似的), 提供了足够的基础设施,既强大又灵活. 那为什么还要处理这种蛋疼的问题呢?!

因为遗留系统, 这次是...

把一个十年前的(设计思想是十年前,或者是一堆外行写的项目)系统升级框架,用springboot2重构. 因为不想改与它交互的系统(实在太重,修改,测试,发布...成本太高),所以在迁就原来代码的情况下. Controller里的方法接参数就用到这可爱的request.getReader().然而取不到. 空的.  猜测是Spring已经"帮忙"处理过一道了.果然....

思路是:

1.自己实现一个HttpServletRequestWrapper的子类, override getReader()/getInputStream()方法. 

2.加一个优先级较高的filter,在这个filter里调用1中的方法, 缓存request里的内容.

具体代码看链接里.毕竟青春短暂, 不废话了.

参考链接: 

https://www.baeldung.com/spring-reading-httpservletrequest-multiple-times  -- 写的还是很清晰的,github上源码不好找,目录太深

https://blog.csdn.net/weixin_39591965/article/details/87707236 -- 没按照这个来,就是记录一下

 

 

以上是 Springrequest.getInputStream()或request.getReader()只能取一次 的全部内容, 来源链接: utcz.com/z/511757.html

回到顶部