javascript
SpringMVC:学习笔记(4)——处理模型数据
SpringMVC—處理模型數據
說明
SpringMVC?提供了以下幾種途徑輸出模型數據:
–?ModelAndView:?處理方法返回值類型為?ModelAndView時,?方法體即可通過該對象添加模型數據
–?Map及Model:入參為org.springframework.ui.Model、org.springframework.ui.ModelMap?或?Java.uti.Map?時,處理方法返回時,Map中的數據會自動添加到模型中。
–?@SessionAttributes:?將模型中的某個屬性暫存到HttpSession?中,以便多個請求之間可以共享這個屬性
–?@ModelAttribute:?方法入參標注該注解后,?入參的對象就會放到數據模型中。
ModelAndView
說明
一旦Controller處理完客戶請求,則返回ModelAndView對象給DispatcherServlet前端控制器。ModelAndView中包含了模型(Model)和視圖(View)。從宏觀角度考慮,DispatcherServlet是整個Web應用的控制器;從微觀角度考慮,Controller是單個Http請求處理過程中的控制器,而ModelAndView是Http請求過程中返回的模型和視圖。
即,控制器處理方法的返回值如果為ModelAndView,則其中既包含視圖信息,也包含模型數據信息。
示例
1.創建ModelAndView,并傳入模型數據
2.編寫JSP頁面,進行測試
說明:SpringMVC會把ModelAndView中的Model中的數據方法Request域對象中。
Map及Model
說明:?
Spring MVC 在內部使用了一個org.springframework.ui.Model 接口存儲模型數據。
Spring MVC 在調用方法前會創建一個隱含的模型對象作為模型數據的存儲容器。
如果方法的入參為 Map 或 Model 類型,Spring MVC 會將隱含模型的引用傳遞給這些入參。在方法體內,開發者可以通過這個入參對象訪問到模型中的所有數據,也可以向模型中添加新的屬性數據。
示例:
使用MODEL:
這里傳入的Map實際為BindingAwareModelMap,所以我們定義參數用Map即可。
?
說明:
并且在這里我們也是可以使用Model類型的。
@SessionAttribute
若希望在多個請求之間共用某個模型屬性數據,則可以在控制器類上標注一個 @SessionAttributes,Spring MVC將在模型中對應的屬性暫存到 HttpSession 中。
說明:
注意這個注解只能放到類的上面
1.首先使用Map將模型數據存到請求域中,然后在類定義處使用@SessionAttributes,拷貝到Session中。
2.編寫JSP頁面及測試
補充
@SessionAttributes 除了可以通過屬性名指定需要放到會話中的屬性外,還可以通過模型屬性的對象類型指定哪些模型屬性需要放到會話中
– @SessionAttributes(types=User.class) 會將隱含模型中所有類型為 User.class 的屬性添加到會話中。
– @SessionAttributes(value={“user1”, “user2”})
– @SessionAttributes(types={User.class, Dept.class})
– @SessionAttributes(value={“user1”, “user2”},types={Dept.class})
@ModelAttribute
說明:
前面談到SpringMVC在每次調用請求處理方法時,都會創建Model類型的一個實例。如果準備使用此實例,則可以在方法中添加一個Model類型的參數。還可以使用在方法中添加@ModelAttribute注釋類型來訪問Model實例。
可以用@ModelAttribute來注釋方法參數:帶有@ModelAttribute注解的方法會將其輸入或創建的參數對象添加到Model對象中(若方法中沒有顯式添加)。
可以用@ModelAttribute標注一個非請求的處理方法:被@ModelAttribute注釋的方法會在此controller每個方法執行前被執行。
基本用法:
1.在方法上使用@ModelAttribute
@Controllerpublic class UserDao{.....@ModelAttributepublic User addUser(User user){return new User(201702,"MrSaber");}.....}說明:
@ModelAttribute 注解的方法可以返回一個 對象或者一個void類型。如果返回一個對象則默認添加到Model中。若方法返回一個void類型,則還必須自行將實例添加到Model中。
?
@Controllerpublic class UserDao{.....@ModelAttributepublic void addUser(User user,Model model){...model.addAttribute(user);}.....}2.在方法參數上使用@ModelAttribute.
@RequestMapping("/save") public String save(@ModelAttribute("newUser") User user) { user.setUsername("U love me"); userService.save(user); return "result"; }說明:
輸入或創建的User實例將用newUser鍵值添加到Model對象中。如果未定義將默認用小寫名稱作為鍵。
轉載于:https://www.cnblogs.com/MrSaver/p/6395684.html
總結
以上是生活随笔為你收集整理的SpringMVC:学习笔记(4)——处理模型数据的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: IP分类以及特殊IP
- 下一篇: Nginx的配置文件nginx.conf