1. 程式人生 > >Springmvc參數獲取

Springmvc參數獲取

highlight 響應 數據 content raw 比較 lencod http --

分析參數獲取,首先要了解http請求時,參數如何存放,有幾種方式,否則沒有所謂的獲取
GET比較簡單,沒有body,所以獲取url上的參數(key=value)。
POST不僅可以在url上放,參數還可以放在body

body根據contentType分為以下幾種情況

application/x-www-form-urlencoded

POST http://127.0.0.1:8888/demo HTTP/1.1
Content-Type: application/x-www-form-urlencoded;charset=utf-8

title=test&sub%5B%5D=1&sub%5B%5D=2&sub%5B%5D=3

  

multipart/form-data(一般為傳輸文件時候用)

body數據以boundary分隔,如

POST http://127.0.0.1 HTTP/1.1
Content-Type:multipart/form-data; boundary=----WebKitFormBoundaryrGKCBY7qhFd3TrwA

------WebKitFormBoundaryrGKCBY7qhFd3TrwA
Content-Disposition: form-data; name="text"

title
------WebKitFormBoundaryrGKCBY7qhFd3TrwA
Content-Disposition: form-data; name="file"; filename="chrome.png"
Content-Type: image/png

PNG ... content of chrome.png ...
------WebKitFormBoundaryrGKCBY7qhFd3TrwA--

  

text/plain application/json text/html等等(統稱為raw)

{"value":"money"}

 

我們平時寫接口一般用application/json

表單默認是application/x-www-form-urlencoded,也可以設置為multipart/form-data

那麽,如何用springmvc來獲取參數

GET請求獲取參數有如下方法

方法1 request.getPrameter("xxx")

方法2 @RequestParam String xxx

註意:

request.getPrameter("xxx") == request.getPrameterValues("xxx")[0]

@RequestParam String xxx == request.getPrameterValues("xxx") 循環並逗號分開

一般一個參數名對應一個值,request.getPrameter("xxx")獲取的值和@RequestParam String xxx是一樣的。當有多個值就有所區別

eg:http://127.0.0.1:8888/demo?xxx=a&xxx=b

request.getPrameter("xxx") = a

@RequestParam String xxx = a,b

request.getPrameterValues("xxx")=[a,b]

POST url參數獲取方式和GET一樣

POST application/x-www-form-urlencoded獲取方式和GET一樣

POST multipart/form-data獲取方式 @RequestParam MultipartFile file

註意:寫form表單要記得修改enctype=multipart/form-data

POST application/json獲取body json @RequestBody Object xxx

@RequestBody String xxx會獲取body的String值,無論是什麽contentType

一般這種情況,傳輸的是一個json對象,利用Springmvc,直接聲明對象,可以幫你轉換成你想要的對象。

基本覆蓋常用獲取參數的情況。後續有時間分析一下springmvc解析參數這塊源碼



ps:

對於GET方式的請求,瀏覽器會把http header和data一並發送出去,服務器響應200(返回數據);

而對於POST,瀏覽器先發送header,服務器響應100 continue,瀏覽器再發送data,服務器響應200 ok(返回數據)

Springmvc參數獲取