大家好,我是IT修真院深圳分院第01期學(xué)員,一枚正直純潔善良的web程序員。今天給大家分享一下,修真院官網(wǎng)JAVA(職業(yè))任務(wù)2的知識點(diǎn)——ContentType 在Spring MVC中如何接收。
1.背景介紹
Content-Type,內(nèi)容類型,一般是指網(wǎng)頁中存在的Content-Type,用于定義網(wǎng)絡(luò)文件的類型和網(wǎng)頁的編碼,決定文件接收方將以什么形式、什么編碼讀取這個(gè)文件。服務(wù)端通常是根據(jù)請求頭(headers)中的 Content-Type 字段來獲知請求中的消息主體是用何種方式編碼,再對主體進(jìn)行解析。
2.知識剖析
2.1 常用的ContentType三種類型:
1)application/x-www-form-urlencoded:瀏覽器的原生 form 表單,如果不設(shè)置 enctype 屬性,那么最終就會以 application/x-www-form-urlencoded 方式提交數(shù)據(jù)。提交的數(shù)據(jù)按照 key1=val1&key2=val2 的方式進(jìn)行編碼,key 和 val 都進(jìn)行了 URL 轉(zhuǎn)碼,大部分服務(wù)端語言都對這種方式有很好的支持。
2)multipart/form-data:使用表單上傳文件時(shí),必須讓 form 的 enctyped 等于這個(gè)值。
3)application/json:目前最流行的請求頭格式,告訴服務(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:指定請求的實(shí)際地址, 比如 /action/info之類。
method:指定請求的method類型, GET、POST、PUT、DELETE等
params:指定request中必須包含某些參數(shù)值是,才讓該方法處理
headers:指定request中必須包含某些指定的header值,才能讓該方法處理請求
consumes:指定處理請求的提交內(nèi)容類型(Content-Type),例如application/json, text/html;
produces:指定返回的內(nèi)容類型,僅當(dāng)request請求頭中的(Accept)類型中包含該指定類型才返回
3.常見問題
在Spring MVC中接收
4.解決方案
根據(jù)consumes值進(jìn)行判斷
5.編碼實(shí)戰(zhàn)
6.擴(kuò)展思考
text/xml格式
7.參考文獻(xiàn)
參考:Http請求中Content-Type講解以及在Spring MVC中的應(yīng)用
8.更多討論
其他Http ContentType格式
問:@RequestMapping的方法只有以上這些嗎?
答:spring新版本又增加了path()方法,需要去看API了解。
問:控制器方法如何匹配處理請求?
答:通過consumes方法的值進(jìn)行判斷。
問:header中的accept的設(shè)置是怎么回事?
答:不同的客戶端發(fā)送請求,請求的accept有可能不一樣,不全是*/*,比如點(diǎn)擊jsp的<a>標(biāo)簽,之后獲取的accept值并不是*/*。accept有具體的匹配規(guī)則,可以參考上面的參考鏈接。
鳴謝
感謝大家觀看
------------------------------------------------------------------------------------------------------------------------
今天的分享就到這里啦,歡迎大家點(diǎn)贊、轉(zhuǎn)發(fā)、留言、拍磚~