1. 程式人生 > >springmvc 後臺偶爾獲取不到引數

springmvc 後臺偶爾獲取不到引數

前臺重新整理多次後,後臺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不動,狂重新整理。

算了,研究不出來,先後臺不查資料,直接返回吧,把資料請求放到前臺去。降低概率吧。