Content-type解析
阿新 • • 發佈:2018-12-10
form表單中Enctype表明提交資料格式。(Content-Type 型別) enctype有三個屬性application/x-www-from-urlencoded,multipart/form-data,text/plain **application/x-www-from-urlencoded: ** 在傳送前對所有字元進行編碼。預設設定。一般get和post請求都是application/x-www-from-urlencoded。form窗體資料被編碼為“名稱=值”,例 a=“a”&b=“b” 通過@RequestParam(“name”)或者request.getParamter(“name”)可以獲取到 **multipart/form-data : ** 不對字元編碼,當使用有檔案上傳控制元件的表單時,該值是必須的。 通過requst.getReader()或者request.getInputStream()獲取 text/plain :將空格轉換為“+”字元,但不編碼特殊字元。編碼格式: key1=value1\r\nkey2=value2
在http請求中,有Header和body之分,讀取header使用request.getHeader("…"),讀取body使用request.getReader(),但getReader獲取的是BufferedReader,需要把它轉換成字串。
String str = "";
InputStream in = request.getInputStream();
InputStreamReader reader = new InputStreamReader(in);
BufferedReader bd = new BufferedReader(reader);
String inputLine;
while((inputLine = bd.readLine())!=null){
str += inputLine;
}
bd.close();
BufferReader reader = request.getReader();
StringBuilder sb = new StringBuilder();
char[] buf = new char[1024];
int rd;
while((rd = reader.read(buf))!=-1) sb.append(buf,0,rd);
SpringMVC: @PathVariable 處理request uri部分。獲取RequestMapping中{}中對應值(樣式對映)
@RequstMapping(value="data/{id}",method={GET})
public @ResponseBody JSONObject getXXX(@PathVariable("id") final Integer id){
//do something
}
@RequestParam