1. ModelAndView

  1. 控制器处理方法的返回值如果为 ModelAndView, 则其既 包含视图信息,也包含模型数据信息
  2. Spring MVC 在内部使用了一个org.springframework.ui.Model 接口存储模型数据
  3. 测试代码

后台处理

    /**
     * 目标方法的返回值可以是 ModelAndView 类型.
     * 其中可以包含视图和模型信息 
     * SpringMvc 会把 ModelAndView 的 model 中的数据放到 request 域对象中 
     * @return
     */
    @RequestMapping("/testModelAndView")
    public ModelAndView testModelAndView(){
        String viewName = SUCCESS;
        ModelAndView modelAndView = new ModelAndView(viewName);

        //添加模型数据到 ModeAndView中
        modelAndView.addObject("time", new Date());

        return modelAndView;
    }

测试的主页

testModelAndView
    

跳转成功页面

hello world

time: ${requestScope.time }

2. SessionAttributes

后台方法

/**
     * @SessionAttributes() 除了可以通过属性名指定需要放到会话中的属性外(使用的是value属性值), 
     * 还可以通过模型属性的对象类型指定那些模型属性需要放到会话中(使用的是Type属性值)
     * 注意:
     *  此注解只能放在类的上面,不能放在方法上面
     * @param map
     * @return
     */
    @RequestMapping("/testSessionAttributes")
    public String testSessionAttributes(Map map){
        User user = new User("Tom", "123", "[email protected]", 15);
        map.put("user", user);
        map.put("school", "DZXY");
        return SUCCESS;
    }

前台测试页

testSessionAttributes
    

测试成功页

names: ${requestScope.names }
    

request user: ${requestScope.user }

session user: ${sessionScope.user }

request school: ${requestScope.school }

session school: ${sessionScope.school }