国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

解決spring3.0升級到4.2,采用@ResponseBody方式 ajax返回404及406的問題

2019-11-14 11:23:44
字體:
來源:轉載
供稿:網友

sPRing3.0升級到4.2之后,遇到了一些很搞的問題,困擾了我很長時間,網上也搜索了很久,沒有解決我的問題。不過現在問題解決了,決定分享一下,方便那些遇到跟我一樣問題的朋友。

不過也產生了一些新的問題,很希望哪位朋友能給我一些提示。

首先第一個問題就是很經典的404,明明我后臺已經進去了,代碼也執行完了,并且沒有出現任何問題,也正常返回,可是為何Ajax代碼一直進error,不進success? 于是打印錯誤信息: xmlHttpRequest.status:404 xmlhttpRequest.readyState:4 textStatus:error XMLHttpRequest.readyState=4,表示響應內容解析完成,可以在客戶端調用了,這我就更郁悶了,既然不是后臺的問題,那么是jquery有問題?。so又在瀏覽器直接輸入url看看能不能返回json串,于是solo了一把,結果把我驚艷了: 這里寫圖片描述 第一:我返回的是json,它為何是個jsp?第二:我沒有這個jsp!第三:這個jsp的名稱看起來是我的函數名?好了事已至此看來還是后臺的問題,于是問題又回到了后臺上,看起來后臺沒有返回json而是jsp,jsp名稱默認為我的函數名,而我又沒有這個jsp,所以導致404,那么著重點就放在了為何會出現這種情況。

后來經過堅持不懈的調試以及對比,發現是map的問題,于是修改代碼,自己實例化一個map,問題得以解決。具體代碼如下: 修改前: 這里寫圖片描述 修改后: 這里寫圖片描述 后來經過兩個map的對比,發現函數中作為參數傳進來的map,比自己實例化的map多兩個屬性,有圖有真相: 這里寫圖片描述 這里寫圖片描述 就這么稍微改了下,404頭也不回的就走了。由此產生了幾個新的問題,第一:是這多出來的兩個屬性中的哪一個導致的404,第二:為什么會返回html而不是json,這兩個問題我還沒有搞清楚,非常希望哪位大神來幫忙解答一下

你以為這樣就結束了?當然沒有,406不期而至,由于404已經差不多耗干了我的腦細胞,所以406一記重拳差點把我打哭,可是木有辦法,咬牙接著百度。

406:表示服務器生成的響應無法被客戶端所接受,現在說明結果是能正確的返回到正確的頁面了,可是又出現這種問題?之前明明是好的啊~~~~!why?tell me why?

百度了好久,總算是發現了一些有用的線索,spring3.1及以后的版本,requestedMediaTypes由[*/*]變成了[text/html],而producibleMediaTypes都是[application/json],可參考http://blog.csdn.net/gbtyy/article/details/17165605

由此可見spring3.1之后的版本,默認的編碼方式變成了[text/html],而工程后綴如果為.html,則會采用這種默認的編碼方式,此時采用@ResponseBody注解進行json自動轉換當然會出現406。并且很不巧的是本人的工程后綴又恰好是.html,簡直是可喜可賀!

so,知道原因后解決起來當然簡單多了。本人親身試驗的幾個解決辦法: 第一:在不改變原有的spring-mvc配置文件的情況下,改變你的工程后綴!讓.html見鬼去吧。

第二:依然采用.html為后綴,不過要修改<mvc:annotation-driven/>配置,改成:

<mvc:annotation-driven content-negotiation-manager="contentNegotiationManager" /> <bean id="contentNegotiationManager" class="org.springframework.web.accept.ContentNegotiationManagerFactoryBean"> <property name="favorPathExtension" value="false" /> <property name="favorParameter" value="false" /> <property name="ignoreAcceptHeader" value="false" /> <property name="mediaTypes" > <value> atom=application/atom+xml html=text/html json=application/json *=*/* </value> </property> </bean>

至此問題全部解決!


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 泽州县| 泰安市| 弥渡县| 巴林右旗| 贞丰县| 阳朔县| 北海市| 芦溪县| 历史| 昌乐县| 丰宁| 吉安市| 洮南市| 南雄市| 墨脱县| 临安市| 巩留县| 杭锦旗| 沙湾县| 蒙山县| 红桥区| 汾阳市| 保德县| 神木县| 梨树县| 邯郸县| 眉山市| 昔阳县| 远安县| 普兰县| 隆化县| 合阳县| 鄂托克旗| 易门县| 扬州市| 开阳县| 阳城县| 海口市| 林周县| 大石桥市| 马山县|