欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

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

執(zhí)行順序:

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

@ModelAttribute原理概述以及使用注意點

@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)㈩愋偷牡谝粋€字母小寫的字符串一致

源碼分析流程:

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

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

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

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

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

確定target屬性

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

若Handler沒有使用@sessionAttribute進行修飾,或者@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>

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

相關(guān)文章

  • Java8時間接口LocalDateTime詳細(xì)用法

    Java8時間接口LocalDateTime詳細(xì)用法

    最近看別人項目源碼,發(fā)現(xiàn)Java8新的日期時間API很方便強大,所以整理了這篇文章,文中有非常詳細(xì)的代碼示例,對正在學(xué)習(xí)java的小伙伴們有很好的幫助,需要的朋友可以參考下
    2021-05-05
  • Java本地方法(JNA)詳解及常見問題

    Java本地方法(JNA)詳解及常見問題

    JNA(Java?Native?Access)是一個開源Java框架,用于無需編寫JNI代碼即可動態(tài)訪問本地系統(tǒng)庫如Windows的dll,它允許Java程序直接調(diào)用本地方法,這篇文章主要介紹了Java本地方法(JNA)詳解及常見問題,需要的朋友可以參考下
    2024-09-09
  • 一文帶你深入了解Java的數(shù)據(jù)結(jié)構(gòu)

    一文帶你深入了解Java的數(shù)據(jù)結(jié)構(gòu)

    Java工具包提供了強大的數(shù)據(jù)結(jié)構(gòu)。這篇文章主要為大家詳細(xì)介紹了Java數(shù)據(jù)結(jié)構(gòu)中常用的幾種接口和類,感興趣的小伙伴可以跟隨小編一起了解一下
    2023-05-05
  • Java中如何調(diào)用cmd壓縮文件

    Java中如何調(diào)用cmd壓縮文件

    以下是對Java調(diào)用cmd壓縮文件的實現(xiàn)方法進行了分析介紹,需要的朋友可以參考下
    2013-07-07
  • Spring Boot Security配置教程

    Spring Boot Security配置教程

    在本文里我們給大家分享了關(guān)于Spring Boot Security配置的相關(guān)步驟以及注意要點,需要的朋友們跟著操作下。
    2019-05-05
  • java 獲取字節(jié)碼文件的幾種方法總結(jié)

    java 獲取字節(jié)碼文件的幾種方法總結(jié)

    這篇文章主要介紹了java 獲取字節(jié)碼文件的幾種方法總結(jié)的相關(guān)資料,這里總結(jié)了三種方法幫助大家實現(xiàn)該功能,需要的朋友可以參考下
    2017-08-08
  • Java利用iTextPDF庫實現(xiàn)制作PDF表格模板并填充數(shù)據(jù)

    Java利用iTextPDF庫實現(xiàn)制作PDF表格模板并填充數(shù)據(jù)

    這篇文章主要為大家詳細(xì)介紹了如何通過Java的iTextPDF庫制作一個PDF表格模板并填充數(shù)據(jù),文中的示例代碼講解詳細(xì),感興趣的小伙伴快跟隨小編一起學(xué)習(xí)一下吧
    2023-12-12
  • vue 實現(xiàn)刪除對象的元素 delete

    vue 實現(xiàn)刪除對象的元素 delete

    這篇文章主要介紹了vue 實現(xiàn)刪除對象的元素delete,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • Java實現(xiàn)控制臺輸出兩點間距離

    Java實現(xiàn)控制臺輸出兩點間距離

    這篇文章主要介紹了Java實現(xiàn)控制臺輸出兩點間距離,涉及了部分編程坐標(biāo)的問題,具有一定參考價值,需要的朋友可以了解下
    2017-09-09
  • springboot2.1.7整合thymeleaf代碼實例

    springboot2.1.7整合thymeleaf代碼實例

    這篇文章主要介紹了springboot2.1.7整合thymeleaf代碼實例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-12-12

最新評論