日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

@RequestMapping,@ResponseBody,@RequestBody用法

發(fā)布時(shí)間:2025/3/14 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 @RequestMapping,@ResponseBody,@RequestBody用法 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

本文轉(zhuǎn)載:http://blog.csdn.net/ff906317011/article/details/78552426

1.@RequestMapping

國(guó)際慣例先介紹什么是@RequestMapping,@RequestMapping 是一個(gè)用來(lái)處理請(qǐng)求地址映射的注解,可用于類或方法上。用于類上,表示類中的所有響應(yīng)請(qǐng)求的方法都是以該地址作為父路徑;用于方法上,表示在類的父路徑下 追加方法上注解中的地址將會(huì)訪問(wèn)到該方法,此處需注意@RequestMapping用在類上可以沒(méi)用,但是用在方法上必須有

例如:

@Controller //設(shè)置想要跳轉(zhuǎn)的父路徑 @RequestMapping(value = "/Controllers") public class StatisticUserCtrl { //如需注入,則寫入需要注入的類 //@Autowired // 設(shè)置方法下的子路經(jīng) @RequestMapping(value = "/method") public String helloworld() { return "helloWorld"; } }

其原理也非常好了解,其對(duì)應(yīng)的 action 就是“ (父路徑) controller/(父路徑下方法路經(jīng))method ”。因此,在本地服務(wù)器上訪問(wèn)方法 http://localhost:8080/controller/method 就會(huì)返回(跳轉(zhuǎn))到“ helloWorld.jsp ”頁(yè)面。

說(shuō)到這了,順便說(shuō)一下 @PathVariable 注解,其用來(lái)獲取請(qǐng)求路徑(url )中的動(dòng)態(tài)參數(shù)。

頁(yè)面發(fā)出請(qǐng)求:

function login() {var url = "${pageContext.request.contextPath}/person/login/"; var query = $('#id').val() + '/' + $('#name').val() + '/' + $('#status').val(); url += query; $.get(url, function(data) { alert("id: " + data.id + "name: " + data.name + "status: " + data.status); }); }

?

例如:

/** * @RequestMapping(value = "user/login/{id}/{name}/{status}") 中的 {id}/{name}/{status} * 與 @PathVariable int id、@PathVariable String name、@PathVariable boolean status * 一一對(duì)應(yīng),按名匹配。 */@RequestMapping(value = "user/login/{id}/{name}/{status}") @ResponseBody //@PathVariable注解下的數(shù)據(jù)類型均可用 public User login(@PathVariable int id, @PathVariable String name, @PathVariable boolean status) { //返回一個(gè)User對(duì)象響應(yīng)ajax的請(qǐng)求 return new User(id, name, status); }

?

2、@ResponseBody

@Responsebody 注解表示該方法的返回的結(jié)果直接寫入 HTTP 響應(yīng)正文(ResponseBody)中,一般在異步獲取數(shù)據(jù)時(shí)使用,通常是在使用 @RequestMapping 后,返回值通常解析為跳轉(zhuǎn)路徑,加上 @Responsebody 后返回結(jié)果不會(huì)被解析為跳轉(zhuǎn)路徑,而是直接寫入HTTP 響應(yīng)正文中。
作用:
該注解用于將Controller的方法返回的對(duì)象,通過(guò)適當(dāng)?shù)腍ttpMessageConverter轉(zhuǎn)換為指定格式后,寫入到Response對(duì)象的body數(shù)據(jù)區(qū)。
使用時(shí)機(jī):
返回的數(shù)據(jù)不是html標(biāo)簽的頁(yè)面,而是其他某種格式的數(shù)據(jù)時(shí)(如json、xml等)使用;

當(dāng)頁(yè)面發(fā)出異步請(qǐng)求:

function login() {var datas = '{"username":"' + $('#username').val() + '","userid":"' + $('#userid').val() + '","status":"' + $('#status').val() + '"}'; $.ajax({ type : 'POST', contentType : 'application/json', url : "${pageContext.request.contextPath}/user/login", processData : false, dataType : 'json', data : datas, success : function(data) { alert("userid: " + data.userid + "username: " + data.username + "status: "+ data.status); }, error : function(XMLHttpRequest, textStatus, errorThrown) { alert("出現(xiàn)異常,異常信息:"+textStatus,"error"); } }); };

例如:

@RequestMapping(value = "user/login") @ResponseBody // 將ajax(datas)發(fā)出的請(qǐng)求寫入 User 對(duì)象中,返回json對(duì)象響應(yīng)回去 public User login(User user) { User user = new User(); user .setUserid(1); user .setUsername("MrF"); user .setStatus("1"); return user ; }

?

異步獲取 json 數(shù)據(jù),加上 @Responsebody 注解后,就會(huì)直接返回 json 數(shù)據(jù)。

?

3、@RequestBody

@RequestBody 注解則是將 HTTP 請(qǐng)求正文插入方法中,使用適合的 HttpMessageConverter 將請(qǐng)求體寫入某個(gè)對(duì)象。

作用:

1) 該注解用于讀取Request請(qǐng)求的body部分?jǐn)?shù)據(jù),使用系統(tǒng)默認(rèn)配置的HttpMessageConverter進(jìn)行解析,然后把相應(yīng)的數(shù)據(jù)綁定到要返回的對(duì)象上;
2) 再把HttpMessageConverter返回的對(duì)象數(shù)據(jù)綁定到 controller中方法的參數(shù)上。

使用時(shí)機(jī):

A) GET、POST方式提時(shí), 根據(jù)request header Content-Type的值來(lái)判斷:

application/x-www-form-urlencoded, 可選(即非必須,因?yàn)檫@種情況的數(shù)據(jù)@RequestParam, @ModelAttribute也可以處理,當(dāng)然@RequestBody也能處理);
multipart/form-data, 不能處理(即使用@RequestBody不能處理這種格式的數(shù)據(jù));
其他格式, 必須(其他格式包括application/json, application/xml等。這些格式的數(shù)據(jù),必須使用@RequestBody來(lái)處理);

B) PUT方式提交時(shí), 根據(jù)request header Content-Type的值來(lái)判斷:

application/x-www-form-urlencoded, 必須;multipart/form-data, 不能處理;其他格式, 必須;

說(shuō)明:request的body部分的數(shù)據(jù)編碼格式由header部分的Content-Type指定;

例如:

@RequestMapping(value = "user/login") @ResponseBody // 將ajax(datas)發(fā)出的請(qǐng)求寫入 User 對(duì)象中 public User login(@RequestBody User user) { // 這樣就不會(huì)再被解析為跳轉(zhuǎn)路徑,而是直接將user對(duì)象寫入 HTTP 響應(yīng)正文中 return user; }

轉(zhuǎn)載于:https://www.cnblogs.com/zhanglijun/p/8403849.html

總結(jié)

以上是生活随笔為你收集整理的@RequestMapping,@ResponseBody,@RequestBody用法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。