SpringMvc处理模型数据(也就是从数据库中查询出来的数据放到请求域中)
这讲的是从数据库中查询到的数据,存放到请求域中。然后页面上直接可以从请求域中获取值。
有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);
}
}