中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Spring MVC不能正常獲取參數的值的問題怎么解決

發布時間:2020-07-09 11:14:56 來源:億速云 閱讀:384 作者:Leah 欄目:編程語言

這篇文章將為大家詳細講解有關Spring MVC不能正常獲取參數的值的問題怎么解決,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。

最近在開發時遇到一個非常奇怪的問題,在tomcat8中使用Spring MVC框架,在Controller中的方法參數無法正常獲取到相應的值,將tomcat版本換成7.0就解決了。

記錄以下解決過程,先上圖:

Spring MVC不能正常獲取參數的值的問題怎么解決

Spring MVC不能正常獲取參數的值的問題怎么解決

項目采用ssm架構,在這里獲取不到參數password的值,在網上查詢相關資料,得到以下幾種解決辦法,但都沒有什么效果:

1.使用@RequestParam注解

給password參數加上了RequestParam注解后,調試依然無法獲取到password的值,將required的值改為true,直接報錯了,錯誤的意思就是缺少password參數,可是明明傳了參數的啊,為什么還說缺少參數呢,難道是沒能夠識別到我傳的參數?這時候考慮到可能是傳參方式的問題。更改了一下傳參方式,將password的值附加到url后面,就像GET請求那樣傳參。果然是這個原因,參數的值能夠接收到了。不過使用這種傳參方式,不加RequestParam注解也能夠接收到參數的值。雖然這種方法能夠接收接收到參數的值了,但我無法忍受POST的這種傳參方式,于是接著尋找下一個方法

Spring MVC不能正常獲取參數的值的問題怎么解決

2.使用@RequestBody注解

Spring MVC不能正常獲取參數的值的問題怎么解決

RequestBody看字面意思就是請求的body,我在請求的時候確實是將參數放到body里面傳遞過去的,看到這個注解感覺貌似看到了希望一樣,于是迫不及待的重啟tomcat,然后用Postman調用,這次直接斷點都不進了,直接報了一個異常:

org.springframework.http.converter.HttpMessageNotReadableException: Required request body is missing: public boolean com.scdq.manager.controller.SystemController.login(java.lang.String)

異常的大概意思就是缺少必要的請求body,通過查詢相關資料,發現RequestBody并不能這么用,需用創建一個類,在類中定義相關的參數,然后再將這個類作為RequestBody注解的參數的類型

Spring MVC不能正常獲取參數的值的問題怎么解決

按照這種方式修改好了代碼,再次重啟tomcat,使用Postman調用,然后再次報了一個異常:

org.springframework.web.HttpMediaTypeNotSupportedException: Content type 'application/x-www-form-urlencoded' not supported

異常的大概意思就是不支持content type為application/x-www-form-urlencoded這種類型,一般通過表單提交的數據默認就是這種類型,猜測可能是RequestBody注解的原因,于是又換了一種傳參方式:使用JSON格式傳遞數據

Spring MVC不能正常獲取參數的值的問題怎么解決

Spring MVC不能正常獲取參數的值的問題怎么解決

使用這種傳參方式,果然能夠接收到參數的值了,不過接收參數的方式和傳參方式都變得復雜了。這個項目是我從公司拷回家繼續寫的,在公司的時候調試一切正常,回家就不行了,百思不得其解,同樣的代碼,改都沒改過,為什么回到家就出問題了呢?既然代碼都是一樣的,運行結果不一樣,那就只能說明運行的環境發生了改變。那么到底是哪里的環境不一樣呢?出了這種問題,首先考慮數據庫的結構,不過家里電腦數據庫版本和公司電腦是一致的,而且數據都是從公司直接拷回來的,所以直接排除數據庫的原因,更何況這是在Controller中接收不到參數,還沒有到訪問數據庫的那一步,就更不可能與數據庫有關系了,所以直接排除數據庫的原因。由于項目是由maven構建的,相關的jar包都是maven自動去下載的,于是懷疑會不會是maven自動下載下來的jar包有問題,然后把本地倉庫的jar包全部刪除,讓maven從新去下載,就這樣重復了幾次,問題依然存在,不得已只好暫時排除maven的原因。最后實在想不到其他的原因了,便開始懷疑tomcat的原因,公司tomcat是7.0版本的,家里的tomcat是8.0版本的,雖然兩個tomcat版本不一致,不過并沒有下意識就覺得一定是tomcat版本的原因,畢竟潛意識里認為8.0一定是7.0之后功能的升級。雖然這樣想,但還是抱著死馬當活馬醫的心態去測試,在tomcat官網下載7.0版本的壓縮包,然后配好相應的環境,用postman調用,結果就是這么意外,參數值獲取到了?!!! 還真是tomcat版本的原因?這感覺也太坑了吧。。。。看來盲目的追求高版本并不是一件好事

關于Spring MVC不能正常獲取參數的值的問題怎么解決就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

五寨县| 化德县| 岢岚县| 远安县| 合水县| 耿马| 香格里拉县| 定陶县| 泰安市| 晋城| 永宁县| 广水市| 姚安县| 天长市| 南涧| 长葛市| 喜德县| 抚顺县| 安陆市| 喀什市| 固阳县| 无棣县| 蓬莱市| 乐业县| 惠东县| 岗巴县| 文昌市| 韶关市| 樟树市| 桦川县| 新巴尔虎右旗| 长寿区| 北流市| 金华市| 扎兰屯市| 紫阳县| 洛扎县| 登封市| 彩票| 汝州市| 乌海市|