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);
        }
    }

 

posted @ 2018-03-30 18:45  陆伟  阅读(1888)  评论(0编辑  收藏  举报