服务器 > 网络 > https

HttpServletRequest参数丢失问题及解决

63人参与 2025-10-31 https

httpservletrequest参数丢失

遇到一个奇怪的问题

测试环境没有出现,本地连正式数据库也没复现。

主要业务逻辑是通过筛选条件从数据库导出一批数据。异常情况是,选择的筛选条件失效了,导致导出了全量数据,这搞不好会有数据泄露风险。

已知列表分页查询是没有问题的

筛选条件都能生效,代码如下:

但是导出时却没起作用,导出代码:

观察可知,他们都调用的getsqlmap方法,该方法具体作用就是从httpservletrequest中获取相关条件参数,并放到map中,供后续查询代码使用,如下:

按常理推断

输入和代码一致,得到的结果应该是一致的,但是却不是这样

使用jvm神器arthas,watch一下getsqlmap方法,然后分别调用列表查询导出接口,得到如下两条记录

对比可知,上面有的很多参数,下面一条都没有,那么参数怎么会消失呢?数据都是从httpservletrequest对象中获取的,那么这个对象里面的数据怎么消失了呢?

细心的网友可能注意到了

我们导出方式是异步的,关键在@async注解

难道莫非,httpservletrequest被回收了,果然网上搜一下,很多案例

比较官方的说明

不推荐在异步中使用request,会得到不确定的结果

因此,我们需要在异步方法前提取参数,再传入

小小的问题,大大的疑惑。花了不少时间定位问题,好在爬出了坑。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。

(0)

您想发表意见!!点此发布评论

推荐阅读

HTTP的206状态码

11-24

Centos服务器搭建Squid Http代理请求服务器教程

12-03

Nginx之https证书配置实现

12-10

Django HTTPResponse响应体中返回openpyxl生成的文件过程

08-03

一文详解Tomcat HTTP请求与响应的完整流程

07-30

Apache HTTP Server 从安装到配置过程详解

07-14

猜你喜欢

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论