您好,登錄后才能下訂單哦!
springmvc中的注解方式有幾種?針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。
Spring MVC屬于SpringFrameWork的后續產品,已經融合在Spring Web Flow里面。Spring 框架提供了構建 Web 應用程序的全功能 MVC 模塊。使用 Spring 可插入的 MVC 架構,可以選擇是使用內置的 Spring Web 框架還可以是 Struts 這樣的 Web 框架。Spring 框架提供了構建 Web 應用程序的全功能 MVC 模塊。
使用 Spring 可插入的 MVC 架構,可以選擇是使用內置的 Spring Web 框架還是 Struts 這樣的 Web 框架。通過策略接口,Spring 框架是高度可配置的,而且包含多種視圖技術,例如 JavaServer Pages(JSP)技術、Velocity、Tiles、iText 和 POI。Spring MVC 框架并不知道使用的視圖,所以不會強迫您只使用 JSP 技術。Spring MVC 分離了控制器、模型對象、分派器以及處理程序對象的角色,這種分離讓它們更容易進行定制。
是一個用來處理請求地址映射的注解
適用于類、方法。用于類上,表示類中的所有響應請求的方法都是以該地址作為父路徑。
屬性
value
: 指定請求的實際地址,值可以是普通的具體值,可以指定為含有某變量的一類值(URI Template Patterns with Path Variables)
可以指定為含正則表達式的一類值(URI Template Patterns with Regular Expressions)method
: 指定請求的method類型,GET、POST、PUT、DELETE等consumes
: 指定處理請求的提交內容類型(Content-Type),例如application/json, text/htmlproduces
: 指定返回的內容類型,僅當request請求頭中的(Accept)類型中包含該指定類型才返回params
: 指定request中必須包含某些參數值是,才讓該方法處理headers
: 指定request中必須包含某些指定的header值,才能讓該方法處理請求
1.處理get請求: @RequestMapping(value = "index",method = RequestMethod.GET) 2.springboot錯誤處理(使用app客戶端返回json格式,使用瀏覽器返回html錯誤頁) @RequestMapping(produces = "text/html") 3.方法僅處理request Content-Type為“application/json”類型的請求 @RequestMapping(value = "/pets", consumes="application/json") 4.僅處理請求中包含了名為“myParam”,值為“myValue”的請求 @RequestMapping(value = "/pets/{petId}", params="myParam=myValue") 5.僅處理request的header中包含了指定“Refer”請求頭和對應值為“http://www.rxy.com/”的請求 @RequestMapping(value = "/pets", headers="Referer=http://www.rxy.com/")
用于將請求參數區數據映射到功能處理方法的參數上
適用:方法參數
屬性
value/name
: 兩個屬性都指代參數名字,即入參的請求參數名字(通常表單name屬性)required
: 是否必須,默認是true,表示請求中一定要有相應的參數,否則將拋出異常defaultValue
: 默認值,表示如果請求中沒有同名參數時的默認值,設置該參數時,自動將required設為false
如果是原子類型,不管加沒加注解,都必須有值,否則拋出異常,如果允許空值請使用包裝類代替 index(@RequestParam Integer num){} 表示該參數必須傳遞,值允許為空 表示該參數非必須,如果不傳則默認為0 getPageData(@RequestParam(name="pageNum",defaultValue="0") String pageNo, String pageSize)
用于將請求URL中的模板變量映射到功能處理方法的參數上,即取出uri模板中的變量作為參數
適用:方法參數
屬性
value: 指定url模版變量名稱,如果名稱與方法參數名不一樣,則需要指定,否則可省略
@RequestMapping("/index/{id}") public String index(@PathVariable("id") String sdf){ System.out.println(sdf); return "index"; }
該注解用于將Controller
的方法返回的對象,通過適當的HttpMessageConverter
轉換為指定格式后,寫入到Response
對象的body
數據區,默認springmvc
以json
形式返回(使用jackson
轉換器)
適用:方法,返回的數據不是html標簽的頁面,而是其他某種格式的數據時(如json、xml等)使用
對比:@RequestBody
將HTTP請求正文轉換為適合的HttpMessageConverter對象
@ResponseBody
將內容或對象作為 HTTP 響應正文返回,并調用適合HttpMessageConverter的Adapter轉換對象,寫入輸出流
1.該注解用于讀取Request請求的body部分數據,使用系統默認配置的HttpMessageConverter進行解析,然后把相應的數據綁定到要返回的對象上
2.再把HttpMessageConverter返回的對象數據綁定到controller中方法的參數上
適用:方法參數,對于request的Content-Type:為application/json, application/xml必須使用該注解
對于application/x-www-form-urlencoded,如果請求方式為put,則為必須,
對于POST/GET方式可選(即非必須,因為@RequestParam,@ModelAttribute也可以處理)
對于multipart/form-data, @RequestBody不能處理這種格式的數據
屬性:required: 是否必須,默認是true,表示請求中一定要有相應的參數,否則將拋出異常
示例:通常使用該注解前端都是發送ajax請求,那么請求部分內容如下:
$.ajax({ type: "POST", url:"/role/saveRole", contentType:"application/json", data: JSON.stringify(_self.form)...
注意:contentType不可省略,data必須是通過stringify轉換為json字符串的數據
那么對應方法就可以這么寫:
@RequestMapping(value = "/saveRole",method = RequestMethod.POST) public String saveRole(@RequestBody People requestJson) {}
如果前端傳遞的是對象的數組,那么后臺也可以直接使用List<Obj>直接接受,這是綁定List數據最實用的方式
可以把Request header中關于cookie的值綁定到方法的參數上
適用:方法參數
獲取cookie中的JSESSIONID public String index(@CookieValue("JSESSIONID") String cookie){}
可以把Request請求header部分的值綁定到方法的參數上
適用:方法參數
獲取請求中Accept-Encoding值,返回gzip, deflate, br public String index(@RequestHeader("Accept-Encoding") String host){return host;}
注解在方法上,表示該方法用于處理特定的異常,處理范圍是當前類,如果想要全局捕獲異常,需要使用@ControllerAdvice
當一個Controller中有多個HandleException注解出現時,那么異常被哪個方法捕捉呢?這就存在一個優先級的問題
ExceptionHandler的優先級是:在異常的體系結構中,哪個異常與目標方法拋出的異常血緣關系越緊密,就會被哪個捕捉到
屬性:value: 需要處理的異常類型集合(Class)
在當前Controller有兩個處理異常的方法,當訪問/index時,頁面顯示: 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(); //返回錯誤頁面 return "error"; } @RequestMapping("/index") public String index(){ int i = 10 / 0; return "index"; } }
關于springmvc中的注解方式有幾種問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。