ContentType 在Spring MVC中如何接收

大家好,我是IT修真院深圳分院第01期學(xué)員,一枚正直純潔善良的web程序員。今天給大家分享一下,修真院官網(wǎng)JAVA(職業(yè))任務(wù)2的知識(shí)點(diǎn)——ContentType 在Spring MVC中如何接收。

1.背景介紹

Content-Type,內(nèi)容類型,一般是指網(wǎng)頁(yè)中存在的Content-Type,用于定義網(wǎng)絡(luò)文件的類型和網(wǎng)頁(yè)的編碼,決定文件接收方將以什么形式、什么編碼讀取這個(gè)文件。服務(wù)端通常是根據(jù)請(qǐng)求頭(headers)中的 Content-Type 字段來(lái)獲知請(qǐng)求中的消息主體是用何種方式編碼,再對(duì)主體進(jìn)行解析。

2.知識(shí)剖析

2.1 常用的ContentType三種類型:

1)application/x-www-form-urlencoded:瀏覽器的原生 form 表單,如果不設(shè)置 enctype 屬性,那么最終就會(huì)以 application/x-www-form-urlencoded 方式提交數(shù)據(jù)。提交的數(shù)據(jù)按照 key1=val1&key2=val2 的方式進(jìn)行編碼,key 和 val 都進(jìn)行了 URL 轉(zhuǎn)碼,大部分服務(wù)端語(yǔ)言都對(duì)這種方式有很好的支持。

2)multipart/form-data:使用表單上傳文件時(shí),必須讓 form 的 enctyped 等于這個(gè)值。

3)application/json:目前最流行的請(qǐng)求頭格式,告訴服務(wù)端消息主體是序列化后的 JSON 字符串。可以方便的提交復(fù)雜的結(jié)構(gòu)化數(shù)據(jù),特別適合 RESTful 的接口。

2.2 @RequestMapping

@Target({ElementType.METHOD, ElementType.TYPE})

@Retention(RetentionPolicy.RUNTIME)

@Documented

@Mapping

public @interface RequestMapping {

String[] value() default {};

RequestMethod[] method() default {};

String[] params() default {};

String[] headers() default {};

String[] consumes() default {};

String[] produces() default {};

}

value:指定請(qǐng)求的實(shí)際地址, 比如 /action/info之類。

method:指定請(qǐng)求的method類型, GET、POST、PUT、DELETE等

params:指定request中必須包含某些參數(shù)值是,才讓該方法處理

headers:指定request中必須包含某些指定的header值,才能讓該方法處理請(qǐng)求

consumes:指定處理請(qǐng)求的提交內(nèi)容類型(Content-Type),例如application/json, text/html;

produces:指定返回的內(nèi)容類型,僅當(dāng)request請(qǐng)求頭中的(Accept)類型中包含該指定類型才返回

3.常見(jiàn)問(wèn)題

在Spring MVC中接收

4.解決方案

根據(jù)consumes值進(jìn)行判斷

5.編碼實(shí)戰(zhàn)

6.擴(kuò)展思考

text/xml格式

7.參考文獻(xiàn)

參考:Http請(qǐng)求中Content-Type講解以及在Spring MVC中的應(yīng)用

PPT鏈接


ContentType類型在Spring MVC如何使用_騰訊視頻

8.更多討論

其他Http ContentType格式

問(wèn):@RequestMapping的方法只有以上這些嗎?

答:spring新版本又增加了path()方法,需要去看API了解。

問(wèn):控制器方法如何匹配處理請(qǐng)求?

答:通過(guò)consumes方法的值進(jìn)行判斷。

問(wèn):header中的accept的設(shè)置是怎么回事?

答:不同的客戶端發(fā)送請(qǐng)求,請(qǐng)求的accept有可能不一樣,不全是*/*,比如點(diǎn)擊jsp的<a>標(biāo)簽,之后獲取的accept值并不是*/*。accept有具體的匹配規(guī)則,可以參考上面的參考鏈接。

鳴謝

感謝大家觀看

------------------------------------------------------------------------------------------------------------------------

今天的分享就到這里啦,歡迎大家點(diǎn)贊、轉(zhuǎn)發(fā)、留言、拍磚~

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容