springMVC中對HTTP請求form data和request payload兩種數據發送塊的後臺接收方式 ...
最近在做項目中發現,前臺提交數據時,如果通過form表單提交和ajax發送json時,springMVC後臺接收不能都通過@ModelAttribute方式處理,經過一番查找後,ajax發送json請求時,後臺是通過 @ResponseBody來接收數據的。但我不滿足於此,對此進行了更多的研究,歸納如下:
一,form表單和ajax發送json請求提交查詢請求頭顯示分佈如下圖,
經過比較後,得出結論一;
如果請求的Content-Type設置為application/x-www-form-urlencoded,那麼這個Post請求被認為是HTTP POST表單請求,參數出現在form data;其他情況如使用原生AJAX的POST請求如果不指定請求頭Request Header,預設使用的Content-Type是text/plain;charset=UTF-8,或者application/json ,參數出現在Request payload塊。
如果項目只是進行到此,那就太簡單了,不至於此,前面已經說過了,參數出現在form data 後臺通過@ModelAttribute接收,也可以通過@RequestParam接收參數;Request payload塊後臺通過@RequestBody接收。但是問題又來了,通過這兩種方式接收數據,在接收數據前,如何對前臺發送的數據進行格式化或者類型轉換呢,同時,對於json數據如何進行實體映射,或者將實體轉換成json發送回前臺呢。關於這些問題,會在接下來的博客中進行探討
請使用手機"掃一掃"x