springMVC的常見註解,以及註解的作用。@Controller,@RestController,@RequestMapping,@RequestParam,@RequestHeader等

目錄
注:使用註解,必須要開啓註解包掃描
1.@Controller
2.@RequestMapping
3.@PathVariable
4.@RequestParam
5.@RequestHeader
6.@CookieValue
7.@RequestBody
該註解的作用
8.@ResponseBody
9.@RestController
注:使用註解,必須要開啓註解包掃描
在MVC核心配置中開啓註解包掃描

<!--    配置包掃描,即要掃描哪些包到容器中-->
    <context:component-scan base-package="com.zzj"></context:component-scan>

開啓MVC註解掃描的支持

<!--    開啓註解掃描的支持-->
    <mvc:annotation-driven></mvc:annotation-driven>

之後在配置完web.xml和MVC核心配置文件後,就可以正常使用註解啦,

如果不知道如何配置springMVC的會,請移步看我的springmvc超詳細配置講解。

1.@Controller
什麼是Controller,跟它類似的註解有哪些?
controller也就是控制器(也可以理解爲處理器Handler),它是處理請求,和對請求參數處理的一個控制器。
跟它類似的註解有三個:其中@Controller是將標註的類作爲一個控制層的組件放到容器中;
@Component:是將標註的類作爲一個普通的組件放到容器中
@Service:是將標註的類作爲一個服務層的組件放到容器中
@Repository:是將標註的類作爲一個持久層(dao)組件放到容器中
它們的作用其實一樣,都是放在容器中,就是區別一下。

2.@RequestMapping
1.該註解的使用位置
··a.該註解作用於控制層類上
··b.該註解作用於控制層方法上,這兩種方式可以同時存在,映射順序爲類—》方法。
2.該註解的參數
``1).value={“/a”,“/b”,…,“/n”}:顯而易見的,value參數用來綁定請求的URL,且是一個數組。意思就是可以爲一個控制器方法同時指定多個請求匹配URL。使用 /a 或者 /b 或者其他的都可以訪問。不過一般都是一個就可以。
··2)method={RequesMethodt}
這個屬性是指定請求中的請求方式是什麼,參數也是一個數組類型,指當前請求方式的請求可以配匹配映射。不使用RestFul模式的話只有Get和Post方式被支持。

    @RequestMapping(value = "/test2",method = {RequestMethod.GET,RequestMethod.DELETE,RequestMethod.POST})
1
3.@PathVariable
這個註解是在使用RestFul方式時,來和請求URL攜帶的參數進行與形參綁定用的。
要了解Restful請求方式,請移步到下面這篇文章,相信可以爲你解惑~

4.@RequestParam
這個註解是用於方法中爲某個形參進行請求參數入參用的。
···注:如果請求體中的參數名和控制器(controller)的形參名一致的話,就會默認匹配並綁定參數。一般是基本類型string的匹配;

··如果形參數名與請求體中參數名不一致,就需要使用當前註解來爲形參綁定參數。
其中註解的三個屬性分別代表:
····value=“請求中的參數名”,指定後就會將請求中的該參數入參匹配到,被該註解註釋的形參中。
····required=true/false: 是指該參數是否必須存在於請求體中。 true:傳入參數必須攜帶該參數,否則無法匹配成功。一般設置爲false。
····defaultValue=“默認值”:即若參數傳入爲null,則爲其設置默認值。

   @RequestMapping("/test4")
    public String test4(@RequestParam(value = "username",required = false,defaultValue = "zzj") String username, String password){

        return "success";
    }

5.@RequestHeader
···作用於形參上,將傳入請求中的請求頭信息與形參進行綁定。也可以理解爲獲取請求頭信息給形參吧。
其三個參數的意思和上面的***@RequestParam***一樣

    @RequestMapping("/test5")
    public String test5(@RequestHeader(value = "host",required = false) String username){

        return "success";
    }

6.@CookieValue
與上面兩個註解一樣,都是用於標記控制器方法的形參,併爲其入參的。
該註解用來獲取請求中的cookie信息。
其三哥屬性及其用法意義,=都與上面兩個是一樣的

    @RequestMapping("/test6")
    public String test6(@CookieValue(value = "cookieName",required = false) String cookieName){
        return "success";
    }

7.@RequestBody
該註解的作用
這個註解是用來綁定在形參上,來獲取,post請求方式下請求體json數據的註解。一般用於將請求體參數與我們得Java類對象進行綁定。但是要實現該功能呢就需要一個依賴的支持,他能夠將我們得json對象轉換W爲Java對象,並賦值。引入 jacson-databind

<!--        支持@RequestBody註解,將json轉爲Java對象的依賴-->
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.12.4</version>
        </dependency>

這裏就能將請求體內容自動轉換爲User對象。

    @RequestMapping("/test7")
    public String test7(@RequestBody User user){
        return "success";
    }

8.@ResponseBody
這個註解作用於方法上
···作用於方法上,是指將返回值作爲響應體消息響應給瀏覽器。也可以使用合成註解,就是下面這個@RestController

9.@RestController
該註解註釋在類上,它底層由@Controller和@ResponseBody兩個註解一起註釋。所以使用該註解後就不在需要寫上@Controller了。
····並且該註解相當於給當前控制器中的每一個方法添加一個@ResponseBody註解。
···該註解註釋後就不會再走視圖解析器了(viewResolver),相當於直接使用HTTPServletResponse給響應體設置內容。
————————————————
版權聲明:本文爲CSDN博主「漫慢丶」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/qq_43660506/article/details/123365543

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章