1. 程式人生 > >http頭部content-type與資料格式

http頭部content-type與資料格式

http 頭部中的 content-type  和我們傳遞的資料是息息相關的,不同的取值,伺服器解析處理方式不同,

介紹一下幾種常見的方式

text/plain:ajax預設方式,將檔案設定為純文字的形式,瀏覽器在獲取到這種檔案時並不會對其進行處理(最原始的流)


application/x-www-form-urlencoded : form表單預設的方式,在$.ajax中如果未設定contentType預設也會以這種方式, 在servlet中的把對應的key、value進行相應的處理新增到Map中,所有才能通過request.getParameter()獲取,在servlet中的request.getParameter()只能取到 在url 後面的引數與 這種方式提交的資料,


  注意: 這種方式傳遞的資料千萬不能亂用JSON.Stringify()格式化,只能傳入原始物件(LZ開始就犯了這樣的錯,導致取不到值)

	var  info={
			"name":"yhy",
			 age:22
	}
      $.ajax({  
         url: 'ddds' ,  
         type: 'post',  
         data: info,  
         async: true,  
         dataType:'json',
         success: function (data,state) {  
         },  
         error: function (data,state) {  
         } ,
    }); 
multipart/form-data :多用於檔案上傳,html5伴隨出現的formdata 也正用於此(支援普通表單、檔案上傳,若是傳檔案則伺服器採用特有formdata的解析方式),傳遞的時候通過流的形式,資料包的格式也有所不同

注意:這裡 傳入的資料必須格式化JSON.stringify(),不能直接傳入原始物件,servlet中解析的時候通過讀流的方式(不包含formdata格式)

StringBuffer json = new StringBuffer();
		String line = null;
		try{
			BufferedReader reader = request.getReader();
			while((line=reader.readLine())!=null){
				json.append(line);
			}
		}
		catch(Exception e){
			System.out.println(e.toString());
			
		}
		System.out.println(json.toString());
application/json :這是現在比較常用的方式,在傳送資料之前需格式化資料JSON.stringify(),確保格式的正確性,伺服器解析方式和上面第二種一樣,先獲取json字串在轉為JSON物件

y

資料傳輸通過chrom開發工具可獲取到的資料

1、get方式,會在url後面新增引數,並在包含在 Query String parameters 


2、post方式

   a、form-data, 這種設定conten-type為application/x-www-form-urlencoded ,servlet 中可通過request.getParameter()獲取

   b、Request-Payload,通過輸入流來獲取,在上面已介紹。