天天看點

字元串參數傳遞回車換行不見了-參數傳遞-spring架構

1、問題場景

前端axios發送get請求,攜帶參數:

  • gwmc: 字元串,崗位名稱
    • 改字段内容最開始由前端表格導入,存入資料庫,在查詢資料庫擷取
    • 表格導入,内容可能會換行

查詢資料庫内容,後端為Java web項目,所用架構

  • springboot
  • mybatis
  • oracle

2、具體問題

: gwmc查詢參數為待換行的字元串,後端request接收之後,在擷取,換行不見了變為一個空格。

字元串參數傳遞輸入換行不見了-參數傳遞-spring架構
  • 後端request.getParameter(“gwmc”),得到的參數是:基層班站 副站長,回車換行變為一個空格

然後查詢的時候當然不會比對上,導緻查詢不出資料。

3、解決方案

3.1、HttpServletRequest request 方式接收參數改為對象或者變量接收

當參數個數少于比較少,可以直接使用變量接收;當參數個數比較多的時候,建議封裝對象,用對象接收參數。

此時接收的字元串原樣保留回車換行,查詢正常。

3.2、編碼解碼

這種方式就是在前端發送異步請求之前,對改字段編碼,比如url編碼,然後,後端接收之後以同樣的方式解碼;

對比:

  • 優點不論内容如何,都能原樣恢複
  • 缺點:多執行了編碼和解碼,過程變複雜和開銷變大

思考:

  1. HttpServletRequest request 底層是怎麼樣接收參數,request.getParameter(“gwmc”)又是怎麼樣解析參數的呢?
  2. 變量或者對象接收參數,底層有是怎麼實作的呢?

因為目前對架構底層沒啥研究,暫時不了解底層原理,有興趣的小夥伴,可自行查詢相關文檔,等後續深入學習架構底層的時候,在研究。