真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

SpringMVC不能正常獲取參數(shù)的值的問題怎么解決

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

成都創(chuàng)新互聯(lián)是一家專注于成都網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計與策劃設(shè)計,太谷網(wǎng)站建設(shè)哪家好?成都創(chuàng)新互聯(lián)做網(wǎng)站,專注于網(wǎng)站建設(shè)十多年,網(wǎng)設(shè)計領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:太谷等地區(qū)。太谷做網(wǎng)站價格咨詢:028-86922220

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

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

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

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

項目采用ssm架構(gòu),在這里獲取不到參數(shù)password的值,在網(wǎng)上查詢相關(guān)資料,得到以下幾種解決辦法,但都沒有什么效果:

1.使用@RequestParam注解

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

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

2.使用@RequestBody注解

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

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

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

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

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

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

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

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

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

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

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

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


網(wǎng)站標題:SpringMVC不能正常獲取參數(shù)的值的問題怎么解決
路徑分享:http://weahome.cn/article/psoshj.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部