最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

說說@ModelAttribute在父類和子類中的執(zhí)行順序

 更新時(shí)間:2021年06月17日 11:22:12   作者:格子間里格子衫  
這篇文章主要介紹了@ModelAttribute在父類和子類中的執(zhí)行順序,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

@ModelAttribute在父類、子類的執(zhí)行順序

被 @ModelAttribute 注解的方法會在Controller每個(gè)方法執(zhí)行之前都執(zhí)行,因此對于一個(gè)Controller中包含多個(gè)URL的時(shí)候,要謹(jǐn)慎使用。

執(zhí)行順序:

先執(zhí)行子類 @ModelAttribute 注解的方法,再執(zhí)行父類中 @ModelAttribute 注解的方法。

@ModelAttribute原理概述以及使用注意點(diǎn)

@ModelAttribute注解修飾的方法:

1.從數(shù)據(jù)庫中取出對象,把對象放到Map中,鍵為user

2.SpringMvc從Map中取出User對象,并且把請求參數(shù)賦值給User對象的對應(yīng)屬性

3.SpringMvc把上述的對象傳入目標(biāo)方法的參數(shù)

注意:在@ModelAttribute修飾的方法中,放入到Map中的鍵名要和目標(biāo)方法入?yún)㈩愋偷牡谝粋€(gè)字母小寫的字符串一致

源碼分析流程:

調(diào)用@ModelAttribute注解修飾的方法,實(shí)際上@ModelAttribute方法中Map中的數(shù)據(jù)放在了implicitModel中.

解析請求處理器的目標(biāo)參數(shù),實(shí)際上該目標(biāo)參數(shù)來自于WebDataBinder對象的target屬性

1).創(chuàng)建WebDataBinder對象

確定objectName屬性:如果傳入的attrName屬性值為"",則objectName為類名第一個(gè)字母小寫

注意:attrName若目標(biāo)方法的POJO屬性使用了@ModelAttribute來修飾,則attrName的值為@ModelAttribute的value屬性

確定target屬性

在implitModel中查找attrName對應(yīng)的屬性值.若不存在,則驗(yàn)證當(dāng)前handler是否使用了@sessionAttribute進(jìn)行修飾,則嘗試從session中獲取attrName所對應(yīng)的屬性值,若session中沒有,則拋出了異常。

若Handler沒有使用@sessionAttribute進(jìn)行修飾,或者@SessionAttrbutes中沒有value值指定的key和attrName相,則通過反射創(chuàng)建POJO對象.

2).SpringMvc把表單的請求參數(shù)賦給了WebDataBinder的target對應(yīng)的屬性,

3).SpringMvc會把WebDataBinder的attrName和targe給到implicitMoel

4).把WebDataBinder的target作為參數(shù)傳遞給目標(biāo)方法的入?yún)?/p>

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 自己動手在Spring-Boot上加強(qiáng)國際化功能的示例

    自己動手在Spring-Boot上加強(qiáng)國際化功能的示例

    這篇文章主要介紹了自己動手在Spring-Boot上加強(qiáng)國際化功能的示例,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-04-04
  • Spring Boot 微信小程序接入微信支付功能

    Spring Boot 微信小程序接入微信支付功能

    本文詳細(xì)介紹了使用SpringBoot框架接入微信支付的全流程,包括導(dǎo)入依賴、配置微信公眾號信息、設(shè)置配置文件、編寫支付相關(guān)實(shí)體類和API地址常量、實(shí)現(xiàn)支付服務(wù)以及Controller層的編寫,感興趣的朋友跟隨小編一起看看吧
    2024-09-09
  • SpringMVC使用RESTful接口案例

    SpringMVC使用RESTful接口案例

    RESTful是一種web軟件風(fēng)格,它不是標(biāo)準(zhǔn)也不是協(xié)議,它不一定要采用,只是一種風(fēng)格,它倡導(dǎo)的是一個(gè)資源定位(url)及資源操作的風(fēng)格,這篇文章主要介紹了SpringBoot使用RESTful接口
    2022-12-12
  • SpringBoot使用Spring Security實(shí)現(xiàn)登錄注銷功能

    SpringBoot使用Spring Security實(shí)現(xiàn)登錄注銷功能

    這篇文章主要介紹了SpringBoot使用Spring Security實(shí)現(xiàn)登錄注銷功能,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2020-09-09
  • Maven生命周期和及插件原理用法詳解

    Maven生命周期和及插件原理用法詳解

    這篇文章主要介紹了Maven生命周期和及插件原理用法詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值的相關(guān)資料
    2020-08-08
  • Java Elastic Job動態(tài)添加任務(wù)實(shí)現(xiàn)過程解析

    Java Elastic Job動態(tài)添加任務(wù)實(shí)現(xiàn)過程解析

    這篇文章主要介紹了Java Elastic Job動態(tài)添加任務(wù)實(shí)現(xiàn)過程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-08-08
  • Java模擬rank/over函數(shù)實(shí)現(xiàn)獲取分組排名的方法詳解

    Java模擬rank/over函數(shù)實(shí)現(xiàn)獲取分組排名的方法詳解

    這篇文章主要為大家詳細(xì)介紹了Java模擬rank()、over()函數(shù)獲取分組排名的方法設(shè)計(jì)及實(shí)現(xiàn),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下
    2023-04-04
  • java實(shí)現(xiàn)消息隊(duì)列的兩種方式(小結(jié))

    java實(shí)現(xiàn)消息隊(duì)列的兩種方式(小結(jié))

    本文主要介紹了兩種java實(shí)現(xiàn)消息隊(duì)列的方式,利用Spring消息模板發(fā)送消息和Apache ActiveMQ官方實(shí)例發(fā)送消息,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-12-12
  • java Comparator.comparing排序使用示例

    java Comparator.comparing排序使用示例

    本文主要介紹了java Comparator.comparing排序使用示例,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-10-10
  • Mybatis返回插入主鍵id的方法

    Mybatis返回插入主鍵id的方法

    這篇文章主要介紹了 Mybatis返回插入主鍵id的方法,在文章底部給大家補(bǔ)充了Mybatis中insert中返回主鍵ID的方法,非常不錯(cuò),需要的朋友可以參考下
    2017-04-04

最新評論

讷河市| 麻城市| 明水县| 金川县| 石泉县| 汕头市| 桂阳县| 汤阴县| 广东省| 敦化市| 怀柔区| 彩票| 津南区| 澄迈县| 蓬莱市| 云梦县| 黑水县| 金山区| 蓬溪县| 中西区| 玛曲县| 平昌县| 通辽市| 应城市| 宁阳县| 长葛市| 富顺县| 基隆市| 南漳县| 普兰县| 河东区| 仁布县| 岑溪市| 江华| 呼和浩特市| 平利县| 安化县| 华宁县| 丽江市| 富蕴县| 皮山县|