這講的是從數據庫中查詢到的數據,存放到請求域中。然后頁面上直接可以從請求域中獲取值。
有4種方式:
1):ModelAndView 是作為一個對象。
1 /** 2 * 目標方法的返回值可以是 ModelAndView 類型。 3 * 其中可以包含視圖和模型信息 4 * SpringMVC 會把 ModelAndView 的 model 中數據放入到 request 域對象中. 5 * @return 6 */ 7 @RequestMapping("/testModelAndView") 8 public ModelAndView testModelAndView(){ 9 String viewName = SUCCESS; 10 ModelAndView modelAndView = new ModelAndView(viewName); 11 12 //添加模型數據到 ModelAndView 中. 13 modelAndView.addObject("time", new Date()); 14 15 return modelAndView; 16 }
從頁面上獲取:
time: ${requestScope.time }
2:Model和Map 這兩個作為參數給傳進去。
1 @RequestMapping("/testMap") 2 public String testMap(Map<String, Object> map){ 3 System.out.println(map.getClass().getName()); 4 map.put("names", Arrays.asList("Tom", "Jerry", "Mike")); 5 return SUCCESS; 6 }
3:@ModelAttribute
/**
* 1. 有 @ModelAttribute 標記的方法, 會在每個目標方法執行之前被 SpringMVC 調用!
* 2. @ModelAttribute 注解也可以來修飾目標方法 POJO 類型的入參, 其 value 屬性值有如下的作用:
* 1). SpringMVC 會使用 value 屬性值在 implicitModel 中查找對應的對象, 若存在則會直接傳入到目標方法的入參中.
* 2). SpringMVC 會一 value 為 key, POJO 類型的對象為 value, 存入到 request 中.
*/
@ModelAttribute
public void getUser(@RequestParam(value="id",required=false) Integer id,
Map<String, Object> map){
System.out.println("modelAttribute method");
if(id != null){
//模擬從數據庫中獲取對象
User user = new User(1, "Tom", "123456", "tom@atguigu.com", 12);
System.out.println("從數據庫中獲取一個對象: " + user);
map.put("user", user);
}
}