@RequestParam 参数偶尔丢失的解决
目录
- @RequestParam参数丢失
- @RequestParam的用法注意事项
- 作用
- @RequestParam属性
- 注意
@RequestParam参数丢失
改动过一版代码之后, 发现@RequestParam注解的参数经常丢失.
首先确认前端确实把参数传过来了,用curl直接请求接口, 发现有时候会出现参数丢失, 重启后再用curl请求某个丢失参数的接口, 无论怎么重试都不会有问题.
没办法了, 只好去跟tomcat的源码, 因为@RequestParam的参数会从request.getParameterMap()方法里取对应的值, 然后打个断点看tomcat怎么获取的
最终跟到这个类里, 实现方法
最终走到coyoteRequest的getParameters方法, 实现很简单
然后getParameterNames();
最终处理查询参数
最终就是从queryMB这个参数解析出来, 这个queryMB就是请求时传过来的参数,
那就看看当getParameterMap为空的时候, queryMB是否为空, 来判定tomcat一定是接到了参数
然后发现queryMB有值, 但是似乎好像上面的方法没有把这个参数解析出来, 开始怀疑一定是某个接口改了什么东西, 因为Request是可以被循环利用的, 但是这个request被再次使用一定是请求结束了, 后来怀疑是使用了deferedResult, 但也被排除了, 因为deferedResult会使用servlet3.0以上的异步方式, request不会被提前循环使用
百思不得其解的时候同时看了这篇文章 豁然开朗,(后来发现有一个导入功能比较耗时, 被放在了一个纯异步的方法里, 访问的方法里有一个方法被切面切掉了, 并且里面获取了request.getParameter) request可以传递到异步线程, 但要保证在请求返回之前访问, 如deferedResult set值之前. (为了避免这种情况,还是尽量不要传到异步线程里了).
@RequestParam的用法注意事项
作用
@RequestParam:将请求参数绑定到你控制器的方法参数上(是springmvc中接收普通参数的注解)
举例来说:
如果你的@RequestParam的Value属性为 pId 那么在请求的链接就是
http://localhost:8080/api/findBByParkId?pId=1
@RequestParam属性
value / name
:请求参数中的名称 (必写参数)required
:请求参数中是否必须提供此参数,默认值是true,true为必须提供defaultValue
:默认值 测试成功
注意
以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。
相关推荐
-
使用@pathvariable与@requestparam碰到的一些问题及解决
目录 @pathvariable与@requestparam碰到的一些问题 一.@pathvariable 二.@requestparam @PathVariable和@RequestParam的使用说明 value的uri值为以下三类 拓展 @pathvariable与@requestparam碰到的一些问题 一.@pathvariable 可以将 URL 中占位符参数绑定到控制器处理方法的入参中:URL 中的 {x} 占位符可以通过@PathVariable("x") 绑定到操作方
-
Spring Boot中@RequestParam参数的5种情况说明
目录 Spring Boot中@RequestParam参数的5种情况 实例如下: Spring Boot注解:@RequestParam详解 1.value:参数名字,即入参的请求参数名字 2.required:该参数是否为必传项. 3.defaultValue:参数的默认值 Spring Boot中@RequestParam参数的5种情况 实例如下: // 可带参数可不带参数,方法都能执行 @RequestMapping("/list") public String test1
-
浅谈@RequestParam 参数是否必须传的问题
一.源码展示 @Target(ElementType.PARAMETER) @Retention(RetentionPolicy.RUNTIME) @Documented public @interface RequestParam { @AliasFor("name") String value() default ""; @AliasFor("value") String name() default ""; boolea
-
关于@RequestParam的使用所遇到的404问题
目录 @RequestParam的使用所遇到的404 问题困扰: 问题所在及解决: 下面是第一种方式: 第二种方式: @RequestParam注解在使用过程一些注意 在项目开发过程的一些教训经验记录 针对上述问题的解决办法 1.修改接口定义中 2.Post方式改为Get方式 @RequestParam的使用所遇到的404 问题困扰: 最近在学习springmvc,但是学习到@RequestParam的使用过程中,遇到了以上的404报错问题,让我很无奈,教程的可以,为什么我的不可以!!!此时有点
-
@RequestParam 参数偶尔丢失的解决
目录 @RequestParam参数丢失 @RequestParam的用法注意事项 作用 @RequestParam属性 注意 @RequestParam参数丢失 改动过一版代码之后, 发现@RequestParam注解的参数经常丢失. 首先确认前端确实把参数传过来了,用curl直接请求接口, 发现有时候会出现参数丢失, 重启后再用curl请求某个丢失参数的接口, 无论怎么重试都不会有问题. 没办法了, 只好去跟tomcat的源码, 因为@RequestParam的参数会从request.get
-
JS实现页面跳转参数不丢失的方法
本文实例讲述了JS实现页面跳转参数不丢失的方法.分享给大家供大家参考,具体如下: 需求:页面编辑后,返回列表页面,参数不丢失,能够记住页数以及筛选条件. 我坚信,不管白猫黑猫,能捉到耗子的就是好猫,当然如果能够高效的,简单的处理最好. 我的思路就是,把列表页面地址作为参数传递过去. 这里就会面临一个问题,url本身就是由多个参数组成的,这样纯粹的传递,就会出问题,参数丢失. 所以要对url进行加密. escape().encodeURI().encodeURIComponent() JavaSc
-
iis7中session丢失的解决方法小结
问题描述: Windows Server 2008 +IIS +ASP.net +SQLServer2008搭建的内部WEB系统. 用户Session总是丢失,可能是IIS的不稳定性将导致Session频繁丢失. 用的是Session=SQLSEVER,即把Session保存到数据库. 解决方法: 1,在命令行进入如下地址(InstallSqlState.sql文件目录) cd "C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727" 2,运行如下
-
Mysql挂掉后无法重启报pid文件丢失的解决方法
阿里云单核2G的配置挂着两个企业网站,访问量一般.最近每天几乎都会出现网站打不开显示数据库链接失败的问题. 多方寻求原因发现,mysql的pid文件缺失,并无法重启自建,后来也看了其他帖子说关闭日志什么的未果,查看系统日志发现,是因为内存满了导致mysql进程被杀,然后就一直挂起状态. Sep 25 11:33:48 iZ28jcqqr7lZ kernel: Out of memory: Kill process 23201 (mysqld) score 53 or sacrifice chil
-
vue中this.$http.post()跨域和请求参数丢失的解决
目录 this.$http.post()跨域和请求参数丢失 this.http.post()参数需注意 this.$http.post()跨域和请求参数丢失 methods: { research: function () { //post请求远程资源 this.$http.post( //请求的url "http://www.hefeixyh.com/login.html", //请求参数,不能以get请求方式写:{params: {userName: "root123&q
-
asp.net URL中包含中文参数造成乱码的解决方法
问题: 前段时间,在系统中做了一个类似于友情链接的功能块,一直运行良好,直到有一天加了类似于以下的链接地址:http://www.****.com/user.aspx?id=水天,就出现大问题了: 1.从IE地址栏中直接输入这个地址,访问没错: 2.做一个静态页,其中包括这个超链接,点击访问也没错: 3.就是把这个链接添加到这个功能块中,点击访问那边接收到的是乱码. 一开始,被这个问题也搞得头大,在google了一把后,总算是把问题给搞清楚了,其实只要这个链接地址不经过任何编码传递是不会有问题的
-
Session丢失的解决办法小结
SessionState 的Timeout),其主要原因有三种 一:有些杀病毒软件会去扫描您的Web.Config文件,那时Session肯定掉,这是微软的说法. 二:程序内部里有让Session掉失的代码,及服务器内存不足产生的. 三:程序有框架页面和跨域情况. 第一种解决办法是:使杀病毒软件屏蔽扫描Web.Config文件(程序运行时自己也不要去编辑它) 第二种是检查代码有无Session.Abandon()之类的. 第三种是在Window服务中将ASP.NET State Service
-
asp.net session丢失的解决方法小结
现在我就把原因和解决办法写出来. ASP.NET Session丢失原因: 由于Asp.net程序是默认配置,所以Web.Config文件中关于Session的设定如下: < sessionState mode='InProc' stateConnectionString='tcpip=127.0.0.1:42424' sqlConnectionString='data source=127.0.0.1;Trusted_Connection=yes' cookieless='true' time
-
微信公众号支付之坑:调用支付jsapi缺少参数 timeStamp等错误解决方法
这段时间一直比较忙,一忙起来真感觉自己就只是一台挣钱的机器了(说的好像能挣到多少钱似的,呵呵):这会儿难得有点儿空闲时间,想把前段时间开发微信公众号支付遇到问题及解决方法跟大家分享下,这些"暗坑"能不掉就不掉吧,要不然关键时刻出问题,真是让人急的焦头烂额. 双12客户的商城活动正在蓄势进行中,却有用户频频反馈说:支付不了,有问题,并截图如下: 当时问题感觉很奇怪,自己测试多次都ok啊,问题来了都赶紧解决吧,最终找到解决办法: 原因是程序中一个字符串变量被错误的设置为数字类型,解决方法很
随机推荐
- Lua教程(十一):模块与包详解
- Jquery多选下拉列表插件jquery multiselect功能介绍及使用
- 浅谈angular4生命周期钩子
- springboot开启声明式事务的方法
- iOS中的UIKeyboard键盘视图使用方法小结
- JS动态添加iframe的代码
- jquery获取URL中参数解决中文乱码问题的两种方法
- python中实现php的var_dump函数功能
- PHP获取汉字笔画数功能【测试可用】
- php $_SERVER windows系统与linux系统下的区别说明
- Javascript将字符串日期格式化为yyyy-mm-dd的方法
- css列表前的小方块
- eclipse3.2.2 + MyEclipse5.5 + Tomcat5.5.27 配置数据库连接池
- 当jQuery1.7遇上focus方法的问题
- linux shell数据重定向(输入重定向与输出重定向)详细分析
- 数据从MySQL迁移到Oracle 需要注意什么
- jQuery获得内容和属性方法及示例
- 判断用户是否在线的代码
- webpack学习笔记之代码分割和按需加载的实例详解
- Bootstrap编写一个兼容主流浏览器的受众巨幕式风格页面