天天看點

@RequestMapping 、@PathVariable 和@ResponseBody、 @RequestParam注解總結前言:内容:

前言:

最近接觸後端,先了解一下注解是什麼東西。

内容:

一、Java注解

官方:注解(Annotation),也叫中繼資料。一種代碼級别的說明。它是JDK1.5及以後版本引入的一個特性,與類、接口、枚舉是在同一個層次。它可以聲明在包、類、字段、方法、局部變量、方法參數等的前面,用來對這些元素進行說明,注釋。

它可以用于建立文檔,跟蹤代碼中的依賴性,甚至執行基本編譯時檢查。注解是以‘@注解名’在代碼中存在的,根據注解參數的個數,我們可以将注解分為:标記注解、單值注解、完整注解三類。它們都不會直接影響到程式的語義,隻是作為注解(辨別)存在,我們可以通過反射機制程式設計實作對這些中繼資料(用來描述資料的資料)的通路。另外,你可以在編譯時選擇代碼裡的注解是否隻存在于源代碼級,或者它也能在class檔案、或者運作時中出現(SOURCE/CLASS/RUNTIME)。

二、三種注解的用法總結

1、@RequestMapping

@RequestMapping 是一個用來處理請求位址映射的注解,可用于類或方法上。用于類上,表示類中的所有響應請求的方法都是以該位址作為父路徑;用于方法上,表示在類的父路徑下追加方法上注解中的位址将會通路到該方法,此處需注意@RequestMapping用在類上可以沒用,但是用在方法上必須有。

前端代碼:

url = 'exam-web/examManager/selectExamByCourseId/' + this.courseId;
           

後端代碼:

@RequestMapping("/examManager")/*父路徑*/
@Controller
public class ExamManagerController {
    @ResponseBody
    @RequestMapping(value = "/selectExamByCourseId/{courseId}", method = RequestMethod.GET) /*子路徑*/

    public ItooResult selectExamByCourseId(@PathVariable String courseId) {


}
           

子路徑裡面有一個{courseId},這個是可變參數,而@PathVariable 注解,其用來擷取請求路徑(url )中的動态參數。

2、@ResponseBody

@Responsebody注解表示該方法的傳回的結果直接寫入 HTTP 響應正文(ResponseBody)中,一般在異步擷取資料時使用,通常是在使用 @RequestMapping後,傳回值通常解析為跳轉路徑,加上 @Responsebody 後傳回結果不會被解析為跳轉路徑,而是直接寫入HTTP 響應正文中。  

1)該注解用于讀取Request請求的body部分資料,使用系統預設配置的HttpMessageConverter進行解析,然後把相應的資料綁定到要傳回的對象上; 

2)再把HttpMessageConverter傳回的對象資料綁定到 controller中方法的參數上

3)request的body部分的資料編碼格式由header部分的Content-Type指定;

4)傳回的資料不是html标簽的頁面,而是其他某種格式的資料時(如json、xml等)使用;

3、@RequestParam

該注解是SpringMvc上使用的,用于背景擷取資料使用。有兩種方式:

1)request.getParameter("參數名")

2)用@RequestParam注解擷取

有三個參數:

value:參數名字,即入參的請求參數名字,如username表示請求的參數區中的名字為username的參數的值将傳入;

required:是否必須,預設是true,表示請求中一定要有相應的參數,否則将報404錯誤碼;

defaultValue:預設值,表示如果請求中沒有同名參數時的預設值。

public String queryUserName(@RequestParam(value="userName" ,required =false ) String userName)
           

required=false 不是必須的  ,這句代碼表示:請求中可以沒有名字為username的參數,如果沒有預設為null。

繼續閱讀