最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

@RequestParam 參數(shù)偶爾丟失的解決

 更新時間:2021年10月25日 11:40:35   作者:QMCoder  
這篇文章主要介紹了@RequestParam 參數(shù)偶爾丟失的解決,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

@RequestParam參數(shù)丟失

改動過一版代碼之后, 發(fā)現(xiàn)@RequestParam注解的參數(shù)經(jīng)常丟失.

首先確認(rèn)前端確實把參數(shù)傳過來了,用curl直接請求接口, 發(fā)現(xiàn)有時候會出現(xiàn)參數(shù)丟失, 重啟后再用curl請求某個丟失參數(shù)的接口, 無論怎么重試都不會有問題.

沒辦法了, 只好去跟tomcat的源碼, 因為@RequestParam的參數(shù)會從request.getParameterMap()方法里取對應(yīng)的值, 然后打個斷點看tomcat怎么獲取的

在這里插入圖片描述

最終跟到這個類里, 實現(xiàn)方法

在這里插入圖片描述

最終走到coyoteRequest的getParameters方法, 實現(xiàn)很簡單

在這里插入圖片描述

然后getParameterNames();

在這里插入圖片描述

最終處理查詢參數(shù)

在這里插入圖片描述

最終就是從queryMB這個參數(shù)解析出來, 這個queryMB就是請求時傳過來的參數(shù),

那就看看當(dāng)getParameterMap為空的時候, queryMB是否為空, 來判定tomcat一定是接到了參數(shù)

在這里插入圖片描述

然后發(fā)現(xiàn)queryMB有值, 但是似乎好像上面的方法沒有把這個參數(shù)解析出來, 開始懷疑一定是某個接口改了什么東西, 因為Request是可以被循環(huán)利用的, 但是這個request被再次使用一定是請求結(jié)束了, 后來懷疑是使用了deferedResult, 但也被排除了, 因為deferedResult會使用servlet3.0以上的異步方式, request不會被提前循環(huán)使用

百思不得其解的時候同時看了這篇文章 豁然開朗,(后來發(fā)現(xiàn)有一個導(dǎo)入功能比較耗時, 被放在了一個純異步的方法里, 訪問的方法里有一個方法被切面切掉了, 并且里面獲取了request.getParameter) request可以傳遞到異步線程, 但要保證在請求返回之前訪問, 如deferedResult set值之前. (為了避免這種情況,還是盡量不要傳到異步線程里了).

@RequestParam的用法注意事項

作用

@RequestParam:將請求參數(shù)綁定到你控制器的方法參數(shù)上(是springmvc中接收普通參數(shù)的注解)

舉例來說:

在這里插入圖片描述

如果你的@RequestParam的Value屬性為 pId 那么在請求的鏈接就是

http://localhost:8080/api/findBByParkId?pId=1

@RequestParam屬性

  • value / name:請求參數(shù)中的名稱 (必寫參數(shù))
  • required:請求參數(shù)中是否必須提供此參數(shù),默認(rèn)值是true,true為必須提供default
  • Value:默認(rèn)值 測試成功

在這里插入圖片描述

注意

在這里插入圖片描述

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論

正蓝旗| 扬中市| 长治县| 芦山县| 桦南县| 泸定县| 台中县| 斗六市| 梨树县| 兴隆县| 武邑县| 金秀| 会理县| 全州县| 缙云县| 汽车| 高台县| 高州市| 兰溪市| 洛隆县| 固镇县| 德令哈市| 金昌市| 江安县| 武平县| 江油市| 拉萨市| 札达县| 砀山县| 克什克腾旗| 蓬莱市| 南漳县| 区。| 新巴尔虎左旗| 大港区| 宁河县| 宣威市| 房山区| 许昌市| 太保市| 弥渡县|