SpringMVC 學習筆記(四) 處理模型資料
spring MVC 提供了以下幾種途徑輸出模型資料:
– ModelAndView: 處理方法返回值型別為 ModelAndView時, 方法體即可通過該物件新增模型資料
– Map及Model:入參為org.springframework.ui.Model、org.springframework.ui.ModelMap 或 Java.uti.Map 時,處理方法返回時,Map中的資料會自動新增到模型中。
– @SessionAttributes: 將模型中的某個屬性暫存到HttpSession 中,以便多個請求之間可以共享這個屬性
– @ModelAttribute: 方法入參標註該註解後, 入參的物件就會放到資料模型中
1.1. ModelAndView
控制器處理方法的返回值如果為 ModelAndView, 則其既包含檢視資訊,也包含模型資料資訊。
• 新增模型資料:
– ModelAndView addObject(String attributeName, Object attributeValue)
– ModelAndView addAllObject(Map<String, ?> modelMap)
• 設定檢視:
– void setView(View view)
– void setViewName(String viewName)
JAVA:
JSP:
結果:
ModelAndView 主要有 view 和 model 屬性
ModelMap 關係圖
最後解析的時候會遍歷 map 然後將鍵值對 存入 request 中
1.2. Map 和Model
Spring MVC 在內部使用了一個org.springframework.ui.Model 介面儲存模型資料
• 具體步驟
– Spring MVC 在呼叫方法前會建立一個隱含的模型物件作為模型資料的儲存容器。
– 如果方法的入參為 Map 或 Model 型別,Spring MVC 會將隱含模型的引用傳
遞給這些入參。在方法體內,開發者可以通過這個入參物件訪問到模型中的所有數
據,也可以向模型中新增新的屬性資料
JAVA:
JSP:
將獲取的結果存入開始new出來的ModelAndView 中,最後解析檢視的時候,遍歷插入request中,我們可以檢視輸出的map型別
1.3. @SessionAttributes
若希望在多個請求之間共用某個模型屬性資料,則可以在控制器類上標註一個 @SessionAttributes,SpringMVC將在模型中對應的屬性暫存到 HttpSession 中。
• @SessionAttributes 除了可以通過屬性名指定需要放到會話中的屬性外,還可以通過模型屬性的物件型別指定哪些模型屬性需要放到會話中
– @SessionAttributes(types=User.class) 會將隱含模型中所有型別為 User.class 的屬性新增到會話中。
– @SessionAttributes(value={“user”,”admin”})
– @SessionAttributes(types={User.class, Department.class})
– @SessionAttributes(value={“user”,”admin”}, types={User.class})
1.4. @ModelAttribute
在方法定義上使用 @ModelAttribute 註解:Spring MVC在呼叫目標處理方法前,會先逐個呼叫在方法級上標註了@ModelAttribute 的方法。
• 在方法的入參前使用 @ModelAttribute 註解:
– 可以從隱含物件中獲取隱含的模型資料中獲取物件,再將請求引數繫結到物件中,再傳入入參
– 將方法入參物件新增到模型中
1.1. HttpSessionRequiredException 異常
如果在處理類定義處標註了@SessionAttributes(“xxx”),則嘗試從會話中獲取該屬性,並將其賦給該入參,然後再用請求訊息填充該入參物件。如果在會話中找不到對應的屬性,則丟擲 HttpSessionRequiredException 異常
改為下面這種方式:
相關文章
- SpringMVC學習筆記10-異常處理SpringMVC筆記
- SpringMVC入門學習---資料的處理SpringMVC
- 機器學習筆記---資料預處理機器學習筆記
- Python深度學習(處理文字資料)--學習筆記(十二)Python深度學習筆記
- SpringMVC學習筆記6-指定處理請求型別SpringMVC筆記型別
- YOLOv3學習筆記之資料處理YOLO筆記
- springmvc 資料處理SpringMVC
- SpringMVC學習筆記SpringMVC筆記
- 【Pandas學習筆記02】-資料處理高階用法筆記
- 【Pandas學習筆記02】處理資料實用操作筆記
- springmvc學習筆記(全)SpringMVC筆記
- SpringMVC學習筆記(一)SpringMVC筆記
- React學習筆記-事件處理React筆記事件
- 維度處理-資料倉儲-讀書筆記(四)筆記
- Vue學習筆記之事件處理Vue筆記事件
- 機器學習演算法筆記之6:資料預處理機器學習演算法筆記
- Vue學習筆記(四) 久處不厭Vue筆記
- JSP筆記-XML 資料處理JS筆記XML
- SpringMVC:資料處理及跳轉SpringMVC
- vue學習筆記3-事件處理Vue筆記事件
- swoft 學習筆記之異常處理筆記
- Flutter學習筆記(32)--PointerEvent事件處理Flutter筆記事件
- SpringMVC學習系列(10) 之 異常處理SpringMVC
- 資訊理論理論學習筆記筆記
- OpenCV影像處理學習筆記-Day1OpenCV筆記
- SpringMVC複習筆記SpringMVC筆記
- 深度學習--資料預處理深度學習
- TS學習筆記(四)筆記
- ONNXRuntime學習筆記(四)筆記
- springboot 學習筆記(四)Spring Boot筆記
- goLang學習筆記(四)Golang筆記
- SpringMVC學習筆記9-靜態資源對映SpringMVC筆記
- 資料庫學習筆記資料庫筆記
- 【大資料】離線批處理計算MapReduce | 複習筆記大資料筆記
- SpringMVC學習筆記之---簡單入門SpringMVC筆記
- SSM學習筆記3——整合 SpringMVC、整合SSMSSM筆記SpringMVC
- 深度學習——資料預處理篇深度學習
- DP學習筆記(四)(2024.10.2)筆記
- c++學習筆記(四)C++筆記