尚矽谷 ModelAttribute分析筆記

2021-10-24 12:02:12 字數 1655 閱讀 8143

確定乙個 key:

1). 若目標方法的 pojo 型別的引數木有使用 @modelattribute 作為修飾, 則 key 為 pojo 類名第乙個字母的小寫

2). 若使用了 @modelattribute 來修飾, 則 key 為 @modelattribute 註解的 value 屬性值.

在 implicitmodel 中查詢 key 對應的物件, 若存在, 則作為入參傳入

1). 若在 @modelattribute 標記的方法中在 map 中儲存過, 且 key 和 1 確定的 key 一致, 則會獲取到.

若 implicitmodel 中不存在 key 對應的物件, 則檢查當前的 handler 是否使用 @sessionattributes 註解修飾,

若使用了該註解, 且 @sessionattributes 註解的 value 屬性值中包含了 key, 則會從 httpsession 中來獲取 key 所

對應的 value 值, 若存在則直接傳入到目標方法的入參中. 若不存在則將丟擲異常.

若 handler 沒有標識 @sessionattributes 註解或 @sessionattributes 註解的 value 值中不包含 key, 則

會通過反射來建立 pojo 型別的引數, 傳入為目標方法的引數

springmvc 會把 key 和 pojo 型別的物件儲存到 implicitmodel 中, 進而會儲存到 request 中.

呼叫 @modelattribute 註解修飾的方法. 實際上把 @modelattribute 方法中 map 中的資料放在了 implicitmodel 中.

解析請求處理器的目標引數, 實際上該目標引數來自於 webdatabinder 物件的 target 屬性

1). 建立 webdatabinder 物件:

①. 確定 objectname 屬性: 若傳入的 attrname 屬性值為 「」, 則 objectname 為類名第乙個字母小寫.

*注意: attrname. 若目標方法的 pojo 屬性使用了 @modelattribute 來修飾, 則 attrname 值即為 @modelattribute

的 value 屬性值

②. 確定 target 屬性:

> 在 implicitmodel 中查詢 attrname 對應的屬性值. 若存在, ok

> 若不存在: 則驗證當前 handler 是否使用了 @sessionattributes 進行修飾, 若使用了, 則嘗試從 session 中

獲取 attrname 所對應的屬性值. 若 session 中沒有對應的屬性值, 則丟擲了異常.

> 若 handler 沒有使用 @sessionattributes 進行修飾, 或 @sessionattributes 中沒有使用 value 值指定的 key

和 attrname 相匹配, 則通過反射建立了 pojo 物件

2). springmvc 把表單的請求引數賦給了 webdatabinder 的 target 對應的屬性.

3). springmvc 會把 webdatabinder 的 attrname 和 target 給到 implicitmodel.

近而傳到 request 域物件中.

4). 把 webdatabinder 的 target 作為引數傳遞給目標方法的入參.

尚矽谷之JDBC

可以通過 drivermanager 類建立到資料庫的連線connection drivermanager 試圖從已註冊的 jdbc 驅動程式集中選擇乙個適當的驅動程式。public static connection getconnection string url public static c...

尚矽谷hbaseshell練習

3.1 基本操作 1 進入hbase客戶端命令列 atguigu hadoop102 hbase bin hbase shell 2 檢視幫助命令 hbase main 001 0 help 3 檢視當前資料庫中有哪些表 hbase main 002 0 list 3.2 表的操作 1 建立表 hb...

尚矽谷 Less 筆記

3.less中的混合 4.less的計算 5.less的繼承 5.避免編譯 less是一種動態樣式語言,屬於css預處理器的範疇,他擴充套件了css語言,增加了變數 mixin 函式的等特性,使css更易於維護和擴充套件 less既可以在客戶端執行,也可以借助node.js在服務端執行 less官網...