springmvc 后台偶尔获取不到参数

120 篇文章 1 订阅
14 篇文章 0 订阅

前台刷新多次后,后台springmvc获取不到前台传的参数,不管是post,get,加随机数都不行。

而且是偶发,不是每次。

记起来自己前面改了下配置。如下。 

 我为了能直接 在控制器返回文字,我再list中加了 下面的两行
<value>application/json;charset=UTF-8</value>
<value>text/json</value> 


<!-- 启用spring mvc 注解 -->

<mvc:annotation-driven>
<!-- 启动JSON格式的配置 -->
<mvc:message-converters>
<bean id="jsonConverter"
class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>text/html;charset=UTF-8</value>  <!-- 避免IE出现下载JSON文件的情况 -->
</list>
</property>
</bean>
</mvc:message-converters>

</mvc:annotation-driven>


概率是10次出现2-3次。我把加上的去掉。只留原来的一行,结果概率下降了。但是还是会有,比如20次,2次获取不到。


后来我估计是我用了comet4j的缘故,我就单独搞了个页面,没有用comet4j。刷新了70-80次没出现一次。(但是出现另外一个问题,在谷歌浏览器中,某个静态图片刷新多次后,居然pending了,单独打开页面又没啥问题,或者单独请求这个图片地址也没啥问题,算了这个问题先不管他。)


观察到当后台获取不到这个参数的时候。comet4j报了500错误。不过刷新页面。comet4j报500错误,是正常的,不过这个好像比较特殊,报了2个。研究中。



后面发现就是comet4j.js的原因,如果不调用JS.Engine.start ,怎么刷新都没事,如果加上以后,就会偶发性的出问题。comet4j.js中自己封装了类似ajax的方法,xhr.open(xxxx) 。 看了大半天,不知道为啥他会重新请求地址栏中的地址,而且是没有参数的。不知道是啥机制。后面发现如果控制器中代码很少的话,就是执行时间很快的话,出问题的概率就很低趋向于没有。例如后台控制器中直接就是返回 return "xxx/xxx" 直接隐射对应的页面的话,就不会出现问题,但是如果后台thread.sleep(1000) 1秒钟的话,概率就比较高。但是秒数比较多的时候又难出现,不知道为啥。难道是comet4j请求的时候,get,一定时间内没返回,就重新请求?但是为啥重新请求的不是comet4j自身/conn?xxxx 这种地址,而是直接重新请求地址栏中的地址呢,是他自己写的ajax方法不够好么?

  测试的时候用chome,按着f5不动,狂刷新。


算了,研究不出来,先后台不查数据,直接返回吧,把数据请求放到前台去。降低概率吧。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值