搜尋
首頁JavaJava基礎springmvc常用5種註解的使用

springmvc常用5種註解的使用

Jul 01, 2020 pm 05:25 PM
springmvc

springmvc的常見5種註解:1、@RequestMapping,是用來處理請求位址對映的註解;2、@RequestParam,用來將請求參數區資料對應到功能處理方法的參數; 3、@PathVariable,用於將請求變數。

springmvc常用5種註解的使用

@RequestMapping

是用來處理請求位址對映的註解
適用於類別、方法。用於類別上,表示類別中的所有回應請求的方法都是以該位址作為父路徑。

屬性

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/html
produces: 指定傳回的內容類型,僅當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/")

@RequestParam

用於將請求參數區資料對應到功能處理方法的參數上
適用:方法參數

屬性

value/name: 兩個屬性都指涉參數名字,即入參的請求參數名字(通常表單name屬性)
required: 是否必須,預設是true,表示請求中一定要有相應的參數,否則將拋出異常
defaultValue: 默認值,表示如果請求中沒有同名參數時的預設值,設定該參數時,自動將required設為false

  如果是原子类型,不管加没加注解,都必须有值,否则抛出异常,如果允许空值请使用包装类代替
  index(@RequestParam Integer num){}  表示该参数必须传递,值允许为空
  表示该参数非必须,如果不传则默认为0
  getPageData(@RequestParam(name="pageNum",defaultValue="0") String pageNo, String pageSize)

@PathVariable

#用於將請求URL中的範本變數映射到功能處理方法的參數上,即取出uri模板中的變數作為參數
適用:方法參數

#屬性

value: 指定url模版變數名稱,如果名稱與方法參數名不一樣,則需要指定,否則可省略

    @RequestMapping("/index/{id}")
         public String index(@PathVariable("id") String sdf){
           System.out.println(sdf);
           return "index";
     }

@ResponseBody

該註解用於將Controller的方法傳回的對象,透過適當的 HttpMessageConverter轉換為指定格式後,寫入到Response物件的body資料區,預設springmvcjson形式傳回(使用jackson轉換器)
適用:方法,傳回的資料不是html標籤的頁面,而是其他某種格式的資料時(如json、xml等)使用
對比: @RequestBody 將HTTP請求正文轉換為適合的HttpMessageConverter對象
@ResponseBody 將內容或對像作為HTTP 響應正文返回,並調用適合HttpMessageConverter的Adapter轉換對象,寫入輸出流

@RequestBody

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直接接受,這是綁定List資料最實用的方式

@CookieValue

可以把Request header中關於cookie的值綁定到方法的參數上
適用:方法參數

获取cookie中的JSESSIONID
public String index(@CookieValue("JSESSIONID") String cookie){}

@RequestHeader

#可以把Request請求header部分的值綁定到方法的參數上
適用:方法參數

获取请求中Accept-Encoding值,返回gzip, deflate, br
public String index(@RequestHeader("Accept-Encoding") String host){return host;}

@ExceptionHandler

注解在方法上,表示该方法用于处理特定的异常,处理范围是当前类,如果想要全局捕获异常,需要使用@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常用5種註解的使用的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

mPDF

mPDF

mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

VSCode Windows 64位元 下載

VSCode Windows 64位元 下載

微軟推出的免費、功能強大的一款IDE編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境