springmvc中的注解方式有幾種?針對這個問題,這篇文章詳細介紹了相對應(yīng)的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

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