1. Content-Type
創(chuàng)新互聯(lián)公司是一家業(yè)務(wù)范圍包括IDC托管業(yè)務(wù),網(wǎng)絡(luò)空間、主機(jī)租用、主機(jī)托管,四川、重慶、廣東電信服務(wù)器租用,聯(lián)通服務(wù)器托管,成都網(wǎng)通服務(wù)器托管,成都服務(wù)器租用,業(yè)務(wù)范圍遍及中國(guó)大陸、港澳臺(tái)以及歐美等多個(gè)國(guó)家及地區(qū)的互聯(lián)網(wǎng)數(shù)據(jù)服務(wù)公司。
MediaType,即是Internet Media Type,互聯(lián)網(wǎng)媒體類型;也叫做MIME類型,在Http協(xié)議消息頭中,使用Content-Type來(lái)表示具體請(qǐng)求中的媒體類型信息。
常見(jiàn)的媒體格式類型如下:
text/html : HTML格式
text/plain :純文本格式
text/xml : XML格式
p_w_picpath/gif :gif圖片格式
p_w_picpath/jpeg :jpg圖片格式
p_w_picpath/png:png圖片格式
以application開頭的媒體格式類型:
application/xhtml+xml :XHTML格式
application/xml : XML數(shù)據(jù)格式
application/atom+xml :Atom XML聚合格式
application/json : JSON數(shù)據(jù)格式
application/pdf :pdf格式
application/msword : Word文檔格式
application/octet-stream : 二進(jìn)制流數(shù)據(jù)(如常見(jiàn)的文件下載)
application/x-www-form-urlencoded :
<form encType=””>中默認(rèn)的encType,form表單數(shù)據(jù)被編碼為key/value格式發(fā) 送到服務(wù)器(表單默認(rèn)的提交數(shù)據(jù)的格式)
另外一種常見(jiàn)的媒體格式是上傳文件之時(shí)使用的:
multipart/form-data : 需要在表單中進(jìn)行文件上傳時(shí),就需要使用該格式
以上就是我們?cè)谌粘5拈_發(fā)中,經(jīng)常會(huì)用到的若干content-type的內(nèi)容格式。
2. Spring MVC中關(guān)于關(guān)于Content-Type類型信息的使用
首先我們來(lái)看看RequestMapping中的Class定義
@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 {};
}
各參數(shù)含義:
value: 指定請(qǐng)求的實(shí)際地址, 比如 /action/info之類。
method: 指定請(qǐng)求的method類型, GET、POST、PUT、DELETE等
consumes: 指定處理請(qǐng)求的提交內(nèi)容類型(Content-Type),例如application/json, text/html;
produces: 指定返回的內(nèi)容類型,僅當(dāng)request請(qǐng)求頭中的(Accept)類型中包含該指定類型才返回
params: 指定request中必須包含某些參數(shù)值是,才讓該方法處理
headers: 指定request中必須包含某些指定的header值,才能讓該方法處理請(qǐng)求
其中,consumes, produces使用content-typ信息進(jìn)行過(guò)濾信息;headers中可以使用content-type進(jìn)行過(guò)濾和判斷。
3. 使用示例
3.1 headers
@RequestMapping(value = "/test", method = RequestMethod.GET, headers="Referer=http://www.ifeng.com/")
public void testHeaders(@PathVariable String ownerId, @PathVariable String petId) {
// implementation omitted
}
這里的Headers里面可以匹配所有Header里面可以出現(xiàn)的信息,不局限在Referer信息。
3.2 params的示例
@RequestMapping(value = "/test/{userId}", method = RequestMethod.GET, params="myParam=myValue")
public void findUser(@PathVariable String userId) {
// implementation omitted
}
僅處理請(qǐng)求中包含了名為“myParam”,值為“myValue”的請(qǐng)求,起到了一個(gè)過(guò)濾的作用。
3.3 consumes/produces
@Controller
@RequestMapping(value = "/users", method = RequestMethod.POST, consumes="application/json", produces="application/json")
@ResponseBody
public List<User> addUser(@RequestBody User userl) {
// implementation omitted
return List<User> users;
}
方法僅處理request Content-Type為“application/json”類型的請(qǐng)求. produces標(biāo)識(shí)==>處理request請(qǐng)求中Accept頭中包含了"application/json"的請(qǐng)求,同時(shí)暗示了返回的內(nèi)容類型為application/json;
4.應(yīng)用場(chǎng)景
GET、POST方式提交的請(qǐng)求:
Content-type: 1、application/x-www-form-urlencoded:@RequestBody不是必須加的
2、mutipart/form-data:@RequestBody不能處理這種格式
3、其他格式,比如application/json,application/xml等,必須使用@RequestBody來(lái)處理
@ResquestBody注解可以使http消息轉(zhuǎn)換器會(huì)根據(jù)content-type對(duì)請(qǐng)求體進(jìn)行解析
PUT方式提交的請(qǐng)求:
以上1和3的場(chǎng)景都是必須使用@RequestBody來(lái)處理的,2場(chǎng)景也是不支持的
實(shí)例:
如: $.ajax({
url:"/login",
type:"post",
contentType:"application/json;charset=UTF-8",
data:JSON.stringify({"name":"test","pass":"123456"})
});
后臺(tái)接收代碼示例:
@RequestMapping(value="/login")
@ResponseBody
public ModelAndView loadForm(@RequestBody Login login){
// implementation omitted
}
分享題目:spring框架Request請(qǐng)求content-Type設(shè)置和配置
當(dāng)前地址:http://aaarwkj.com/article24/peegje.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制網(wǎng)站、企業(yè)網(wǎng)站制作、虛擬主機(jī)、企業(yè)建站、網(wǎng)站導(dǎo)航、商城網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)