JavaWeb中的常用的請(qǐng)求傳參注解說(shuō)明
1、@RequestMapping
@RequestMapping 既可以用在類級(jí)別,也可以用在方法級(jí)別,當(dāng)它定義在類級(jí)別的時(shí)候,標(biāo)明該控制器所處理的請(qǐng)求都將被映射到這個(gè)路徑下。
另外,@RequestMapping中可以使用method屬性,如果指定了method屬性的值,那么就只能使用指定的請(qǐng)求方法,如果沒(méi)有指定的話,那么就可以使用HTTP的get/post方法了。
get 請(qǐng)求特點(diǎn)
- a. 請(qǐng)求參數(shù)會(huì)添加到請(qǐng)求資源路徑的后面,只能添加少量參數(shù)(因?yàn)檎?qǐng)求行只有一行,大約只能存放2K左右的數(shù)據(jù))
- b. 請(qǐng)求參數(shù)會(huì)顯示在瀏覽器地址欄,路由器會(huì)記錄請(qǐng)求地址 (極為的不安全)
- c. 如果傳輸中文,必定會(huì)亂碼(原因:get 請(qǐng)求默認(rèn)編碼格式為:IIO-8859-1,后臺(tái)編碼格式一般為:GBK或者UTF-8)
post 請(qǐng)求的特點(diǎn)
- a. 請(qǐng)求參數(shù)添加到請(qǐng)求體里面,可以添加大量的參數(shù)(也解釋了為什么瀏覽器地址欄不能發(fā)送post請(qǐng)求,在地址欄里我們只能填寫(xiě)URL,并不能進(jìn)入到 Http 包的請(qǐng)求體當(dāng)中)
- b. 相對(duì)安全,但是,post 請(qǐng)求不會(huì)對(duì)請(qǐng)求參數(shù)進(jìn)行加密處理(可以使用https協(xié)議來(lái)保證數(shù)據(jù)安全)
2、@GetMapping
用于將HTTP GET請(qǐng)求映射到特定處理程序方法的注釋。
相當(dāng)于@RequestMapping(method = RequestMethod.GET)
3、@PostMapping
用于將 HTTP POST 請(qǐng)求映射到特定處理程序方法的注釋。
相當(dāng)于@RequestMapping(method = RequestMethod.POST)
4、@RequestParam
這個(gè)注解是使用在方法的形參上的,主要用途就是將請(qǐng)求的參數(shù)綁定到方法的形參上,有一個(gè)required屬性,默認(rèn)情況下是true,就是必須要傳參數(shù),如果想該形參可傳可不傳參數(shù)的話,就將屬性值設(shè)置為false即可。
@RequestMapping("/hello")
public String hello(@RequestParam(value = "name", required = false) String name, @RequestParam(value = "age", required = true) String age) {
//age參數(shù)必須傳 ,name可傳可不傳
...
}
5、@PathVariable
該注解主要是用于做動(dòng)態(tài)綁定使用,讓形參的值變成可供使用的URL變量,多用在 Restful 風(fēng)格中。
@RequestMapping(value="/hello/{name}",method=RequestMethod.GET)
public String findPet(@PathVariable String name) {
//使用@PathVariable注解綁定 {name} 到String name
}
@PathVariable中的參數(shù)可以是任意的簡(jiǎn)單類型,如int、long、Date等,Spring會(huì)自動(dòng)將其轉(zhuǎn)換成合適的類型或者拋出TypeMismatchException異常,也可以注冊(cè)支持額外的數(shù)據(jù)類型。
另外,它也支持正則表達(dá)式,這就決定了它超強(qiáng)的屬性,它能在路徑模板中使用占位符,可以設(shè)定特定的前綴匹配和后綴匹配,自定義格式等。
6、@RequestBody
該注解是指方法形參應(yīng)該被綁定到HTTP請(qǐng)求的Body上。
@RequestMapping(value = "/something", method = RequestMethod.PUT)
public void handle(@RequestBody User user){
//可以綁定自定義的對(duì)象類型
}

使用 @RequestBody 注解
@RequestBody 注解是用于接收請(qǐng)求的 Content-Type為application/json 類型的請(qǐng)求,數(shù)據(jù)類型是 JSON。

不使用 @RequestBody 注解
不使用 @RequestBody 注解時(shí),可以接收 Content-Type為application/x-www-form-urlencoded 類型,或者 Text 類型的請(qǐng)求所提交的數(shù)據(jù),數(shù)據(jù)格式:
aaa=111&bbb=222
1)form 表單提交以及用 Ajax 提交數(shù)據(jù)時(shí)方法所發(fā)送的請(qǐng)求就是這種類型。
2)后臺(tái)只需用具有對(duì)應(yīng)屬性 id 和 name 的對(duì)象接收就行。

如果使用了 @RequestBody 來(lái)強(qiáng)行接收 Text 或者 application/x-www-form-urlencoded 類型,會(huì)報(bào)類型 not supported 的如下錯(cuò)誤:

總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Tomcat 服務(wù)器 在45秒內(nèi)未啟動(dòng)成功的解決方法
下面小編就為大家?guī)?lái)一篇Tomcat 服務(wù)器 在45秒內(nèi)未啟動(dòng)成功的解決方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-11-11
eclipse實(shí)現(xiàn)Schnorr數(shù)字簽名
這篇文章主要為大家詳細(xì)介紹了eclipse實(shí)現(xiàn)Schnorr數(shù)字簽名,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-06-06
解決springboot自定義注解AOP在controller上導(dǎo)致controller注入失敗問(wèn)題
這篇文章主要介紹了解決springboot自定義注解AOP在controller上導(dǎo)致controller注入失敗問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-10-10
java安全fastjson1.2.24反序列化TemplatesImpl分析
這篇文章主要介紹了java安全fastjson1.2.24反序列化TemplatesImpl分析,fastjson是alibaba開(kāi)源的一個(gè)用于處理json數(shù)據(jù)格式的解析庫(kù),它支持將java對(duì)象解析成json字符串格式的數(shù)據(jù),也可以將json字符串還原成java對(duì)象2022-07-07
Spring擴(kuò)展點(diǎn)之BeanFactoryPostProcessor詳解
這篇文章主要介紹了Spring擴(kuò)展點(diǎn)之BeanFactoryPostProcessor詳解,Spring的設(shè)計(jì)非常優(yōu)雅,有很多的擴(kuò)展點(diǎn)供我們對(duì)項(xiàng)目進(jìn)行擴(kuò)展,今天學(xué)習(xí)一下Spring其中擴(kuò)展點(diǎn)之一的BeanFactoryPostProcessor,需要的朋友可以參考下2023-11-11

