springmvc中的注解方式有幾種?針對(duì)這個(gè)問(wèn)題,這篇文章詳細(xì)介紹了相對(duì)應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問(wèn)題的小伙伴找到更簡(jiǎn)單易行的方法。
我們提供的服務(wù)有:網(wǎng)站制作、成都網(wǎng)站制作、微信公眾號(hào)開(kāi)發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、涇縣ssl等。為近千家企事業(yè)單位解決了網(wǎng)站和推廣的問(wèn)題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的涇縣網(wǎng)站制作公司
Spring MVC屬于SpringFrameWork的后續(xù)產(chǎn)品,已經(jīng)融合在Spring Web Flow里面。Spring 框架提供了構(gòu)建 Web 應(yīng)用程序的全功能 MVC 模塊。使用 Spring 可插入的 MVC 架構(gòu),可以選擇是使用內(nèi)置的 Spring Web 框架還可以是 Struts 這樣的 Web 框架。Spring 框架提供了構(gòu)建 Web 應(yīng)用程序的全功能 MVC 模塊。
使用 Spring 可插入的 MVC 架構(gòu),可以選擇是使用內(nèi)置的 Spring Web 框架還是 Struts 這樣的 Web 框架。通過(guò)策略接口,Spring 框架是高度可配置的,而且包含多種視圖技術(shù),例如 JavaServer Pages(JSP)技術(shù)、Velocity、Tiles、iText 和 POI。Spring MVC 框架并不知道使用的視圖,所以不會(huì)強(qiáng)迫您只使用 JSP 技術(shù)。Spring MVC 分離了控制器、模型對(duì)象、分派器以及處理程序?qū)ο蟮慕巧@種分離讓它們更容易進(jìn)行定制。
是一個(gè)用來(lái)處理請(qǐng)求地址映射的注解
適用于類、方法。用于類上,表示類中的所有響應(yīng)請(qǐng)求的方法都是以該地址作為父路徑。
屬性
value
: 指定請(qǐng)求的實(shí)際地址,值可以是普通的具體值,可以指定為含有某變量的一類值(URI Template Patterns with Path Variables)
可以指定為含正則表達(dá)式的一類值(URI Template Patterns with Regular Expressions)method
: 指定請(qǐng)求的method類型,GET、POST、PUT、DELETE等consumes
: 指定處理請(qǐng)求的提交內(nèi)容類型(Content-Type),例如application/json, text/htmlproduces
: 指定返回的內(nèi)容類型,僅當(dāng)request請(qǐng)求頭中的(Accept)類型中包含該指定類型才返回params
: 指定request中必須包含某些參數(shù)值是,才讓該方法處理headers
: 指定request中必須包含某些指定的header值,才能讓該方法處理請(qǐng)求
1.處理get請(qǐng)求: @RequestMapping(value = "index",method = RequestMethod.GET) 2.springboot錯(cuò)誤處理(使用app客戶端返回json格式,使用瀏覽器返回html錯(cuò)誤頁(yè)) @RequestMapping(produces = "text/html") 3.方法僅處理request Content-Type為“application/json”類型的請(qǐng)求 @RequestMapping(value = "/pets", consumes="application/json") 4.僅處理請(qǐng)求中包含了名為“myParam”,值為“myValue”的請(qǐng)求 @RequestMapping(value = "/pets/{petId}", params="myParam=myValue") 5.僅處理request的header中包含了指定“Refer”請(qǐng)求頭和對(duì)應(yīng)值為“http://www.rxy.com/”的請(qǐng)求 @RequestMapping(value = "/pets", headers="Referer=http://www.rxy.com/")
用于將請(qǐng)求參數(shù)區(qū)數(shù)據(jù)映射到功能處理方法的參數(shù)上
適用:方法參數(shù)
屬性
value/name
: 兩個(gè)屬性都指代參數(shù)名字,即入?yún)⒌恼?qǐng)求參數(shù)名字(通常表單name屬性)required
: 是否必須,默認(rèn)是true,表示請(qǐng)求中一定要有相應(yīng)的參數(shù),否則將拋出異常defaultValue
: 默認(rèn)值,表示如果請(qǐng)求中沒(méi)有同名參數(shù)時(shí)的默認(rèn)值,設(shè)置該參數(shù)時(shí),自動(dòng)將required設(shè)為false
如果是原子類型,不管加沒(méi)加注解,都必須有值,否則拋出異常,如果允許空值請(qǐng)使用包裝類代替 index(@RequestParam Integer num){} 表示該參數(shù)必須傳遞,值允許為空 表示該參數(shù)非必須,如果不傳則默認(rèn)為0 getPageData(@RequestParam(name="pageNum",defaultValue="0") String pageNo, String pageSize)
用于將請(qǐng)求URL中的模板變量映射到功能處理方法的參數(shù)上,即取出uri模板中的變量作為參數(shù)
適用:方法參數(shù)
屬性
value: 指定url模版變量名稱,如果名稱與方法參數(shù)名不一樣,則需要指定,否則可省略
@RequestMapping("/index/{id}") public String index(@PathVariable("id") String sdf){ System.out.println(sdf); return "index"; }
該注解用于將Controller
的方法返回的對(duì)象,通過(guò)適當(dāng)?shù)?code>HttpMessageConverter轉(zhuǎn)換為指定格式后,寫入到Response
對(duì)象的body
數(shù)據(jù)區(qū),默認(rèn)springmvc
以json
形式返回(使用jackson
轉(zhuǎn)換器)
適用:方法,返回的數(shù)據(jù)不是html標(biāo)簽的頁(yè)面,而是其他某種格式的數(shù)據(jù)時(shí)(如json、xml等)使用
對(duì)比:@RequestBody
將HTTP請(qǐng)求正文轉(zhuǎn)換為適合的HttpMessageConverter對(duì)象
@ResponseBody
將內(nèi)容或?qū)ο笞鳛?HTTP 響應(yīng)正文返回,并調(diào)用適合HttpMessageConverter的Adapter轉(zhuǎn)換對(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ù),對(duì)于request的Content-Type:為application/json, application/xml必須使用該注解
對(duì)于application/x-www-form-urlencoded,如果請(qǐng)求方式為put,則為必須,
對(duì)于POST/GET方式可選(即非必須,因?yàn)锧RequestParam,@ModelAttribute也可以處理)
對(duì)于multipart/form-data, @RequestBody不能處理這種格式的數(shù)據(jù)
屬性:required: 是否必須,默認(rèn)是true,表示請(qǐng)求中一定要有相應(yīng)的參數(shù),否則將拋出異常
示例:通常使用該注解前端都是發(fā)送ajax請(qǐng)求,那么請(qǐng)求部分內(nèi)容如下:
$.ajax({ type: "POST", url:"/role/saveRole", contentType:"application/json", data: JSON.stringify(_self.form)...
注意:contentType不可省略,data必須是通過(guò)stringify轉(zhuǎn)換為json字符串的數(shù)據(jù)
那么對(duì)應(yīng)方法就可以這么寫:
@RequestMapping(value = "/saveRole",method = RequestMethod.POST) public String saveRole(@RequestBody People requestJson) {}
如果前端傳遞的是對(duì)象的數(shù)組,那么后臺(tái)也可以直接使用List<Obj>直接接受,這是綁定List數(shù)據(jù)最實(shí)用的方式
可以把Request header中關(guān)于cookie的值綁定到方法的參數(shù)上
適用:方法參數(shù)
獲取cookie中的JSESSIONID public String index(@CookieValue("JSESSIONID") String cookie){}
可以把Request請(qǐng)求header部分的值綁定到方法的參數(shù)上
適用:方法參數(shù)
獲取請(qǐng)求中Accept-Encoding值,返回gzip, deflate, br public String index(@RequestHeader("Accept-Encoding") String host){return host;}
注解在方法上,表示該方法用于處理特定的異常,處理范圍是當(dāng)前類,如果想要全局捕獲異常,需要使用@ControllerAdvice
當(dāng)一個(gè)Controller中有多個(gè)HandleException注解出現(xiàn)時(shí),那么異常被哪個(gè)方法捕捉呢?這就存在一個(gè)優(yōu)先級(jí)的問(wèn)題
ExceptionHandler的優(yōu)先級(jí)是:在異常的體系結(jié)構(gòu)中,哪個(gè)異常與目標(biāo)方法拋出的異常血緣關(guān)系越緊密,就會(huì)被哪個(gè)捕捉到
屬性:value: 需要處理的異常類型集合(Class)
在當(dāng)前Controller有兩個(gè)處理異常的方法,當(dāng)訪問(wèn)/index時(shí),頁(yè)面顯示: json data
package com.rxy.controller; @Controller public class HelloController { @ExceptionHandler({ ArithmeticException.class }) @ResponseBody public String handleArithmeticException(Exception e) { e.printStackTrace(); return "json data"; } @ExceptionHandler({ IOException.class }) public String handleIOException(Exception e) { e.printStackTrace(); //返回錯(cuò)誤頁(yè)面 return "error"; } @RequestMapping("/index") public String index(){ int i = 10 / 0; return "index"; } }
關(guān)于springmvc中的注解方式有幾種問(wèn)題的解答就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,如果你還有很多疑惑沒(méi)有解開(kāi),可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道了解更多相關(guān)知識(shí)。
名稱欄目:springmvc中的注解方式有幾種
當(dāng)前地址:http://jinyejixie.com/article42/ghdcec.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站導(dǎo)航、面包屑導(dǎo)航、手機(jī)網(wǎng)站建設(shè)、網(wǎng)站改版、網(wǎng)站內(nèi)鏈、品牌網(wǎng)站設(shè)計(jì)
聲明:本網(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)