解决 HttpServletRequest 流数据不可重复读

解决 HttpServletRequest 流数据不可重复读,第1张

甲方客户的生产系统,有安全风险预警和安全事件快速溯源要求,需要做一套日志管理规范。

要求我们接入的系统,要对用户登录、注册、密码修改等重要场景,严格按照提供的格式,输出相应的日志。

后续通过filebeat对接,收集我们系统上的日志信息。

简单来说,就是应用系统,处理接口请求时,统一打印相应日志。

成熟且常见的日志统一打印方案,就是使用 AOP 技术,自定义注解,在切面上使用环绕通知@Around,拦截请求,获取Controller类上方法的入参、出参即可。

奈何业务场景使用到的接口,以前的人在实现的时候,使用了如下方式

把传参直接丢在 >

ServletRequest getReader 是接收request 数据的辅助方式。Transfer-Encoding:chunked这个信息头项应该是服务器回应动态页面时加入的一个表示内容长度类型不确定的属性。 是不是说你的服务器不应该读到包含这个属性的请求?

用requestgetAttribute获取,而不是getParameter。

(1)>

LZ你为何要这样写?

你直接在一个方法里面完成更新就是了啊,何必写两个方法?

你非要这样写的话就存在session里面吧,肯定能拿到

之所以取不到是因为表单提交不保留request里面的值

在SpringMVC web应用中,对于一个rest接口,获取请求参数我们一般使用 @requestParam 、 @requestBody 等注解 。对于表单类型的请求参数,有一下几种获取方式

前两种方式其实是一种方式,@requestParam底层就是利用requestgetParameter的原理。这两种方式有一个弊端就是只能一个个获取,而且必须知道对方传过来的参数的key值,如果想要一次性获取,可以使用requestgetInputStream方法获取一个inputStream对象,然后读取流里面的数据。

但在实际过程中,我们会发现通过requestgetInputStream()方式获取的数据为空。

这里的表单数据已经被填充到parameterMap中,不能再通过getInputStream获取。

如何解决这个问题呢。

在javaxservlet>

以上就是关于解决 HttpServletRequest 流数据不可重复读全部的内容,包括:解决 HttpServletRequest 流数据不可重复读、前台获取不到后台request,该如何解决、Request获取请求流getReader等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/10206214.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-06
下一篇 2023-05-06

发表评论

登录后才能评论

评论列表(0条)

保存