首页 > 其他 > 详细

5、处理模型数据

时间:2015-11-09 23:50:34      阅读:194      评论:0      收藏:0      [点我收藏+]


Spring MVC提供了以下几种途径输出模型数据
  —— ModelAndView: 处理方法返回值类型为ModelAndView时,方法体即可通过该对象添加模型数据。数据会添加到request域中。在页面上可以获取到该数据。
  —— Map 及 Model:入参为 org.springframework.ui.Model、org.springframework.ui.ModelMap 或 java.uti.Map 时,处理方法返回时,Map中的数据会自动添加到模型中。数据放在request域中。
  —— @SessionAttributes:将模型中的某个属性暂存到HttpSession中,以便多个请求之间可以共享这个属性。
  —— @ModelAttribute:方法入参标注该注解后,入参的对象就会放到数据模型中。

 

下面是一个实例,说明前三种途径的用法。最后的@ModelAttribute在后面单独说:

package com.springmvc.modelAndView_7;

import java.util.Arrays;
import java.util.Date;
import java.util.List;
import java.util.Map;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.SessionAttributes;
import org.springframework.web.servlet.ModelAndView;

import com.springmvc.pojoParam_6.User;

@Controller
@RequestMapping("/ModelAndView")
@SessionAttributes(value={"school"}, types={User.class})
public class ModelAndViewTest {
    
    private static final String SUCCESS = "success";
    
    /**
     * 1、处理方法的返回值为ModelAndView类型
     * 目标方法的返回值可以是ModelAndView类型,其中可以包含视图和模型信息
     * SpringMVC会把ModelAndView中model中的数据放入到request域对象中
     */
    @RequestMapping("/testModelAndView")
    public ModelAndView testModelAndView(){
        String viewName = SUCCESS;
        
        ModelAndView modelAndView = new ModelAndView(viewName);
        //添加模型数据到ModelAndView中,目标页面中在请求域中获取${requestScope.time }
        modelAndView.addObject("time", new Date());
        
        return modelAndView;
    }
    
    /**
     * 2、入参为Map类型的实现,也是放在请求域中
     * 目标方法可以添加Map类型(实际上也可以是Model类型,或ModelMap类型)的参数实现
     */
    @RequestMapping("/testMap")
    public String testMap(Map<String, List<String>> map){
        map.put("names", Arrays.asList("Tom", "Jerry", "Mike"));
        
        return SUCCESS;
    }
    
    /**
     * 3、@SessionAttributes注解方式实现
     * 在类上面放置@SessionAttributes注解,这样就能够将注解中指定的属性放置到session域中
     */
    @RequestMapping("/testSessionAttributes")
    public String testSessionAttributes(Map<String, Object> map){
        User user = new User("jerry", "123456", 16, "123@126.com");
        
        map.put("user", user);
        map.put("school", "HNedu");
        
        return SUCCESS;
    }

}

 

  在/WEB-INFO/views/success.jsp页面中可以获取到request域或者是session域中的数据:

<body>

    <h1>hello world success!!!</h1>
    <br/>
    
    模型视图方式,ModelAndView实现,requestScope time:${requestScope.time }
    <br/>
    模型视图方式,ModelAndView实现,sessionScope time:${sessionScope.time }
    <br/><br/>
    
    模型视图方式,Map实现,requestScope names:${requestScope.names }
    <br/>
    模型视图方式,Map实现,sessionScope names:${sessionScope.names }
    <br/><br/>
    
    模型视图方式,@SessionAttributes注解实现:
    <br/>
    request school: ${requestScope.school }
    <br/>
    session school: ${sessionScope.school }
    <br/>
    request user: ${requestScope.user }
    <br/>
    session user: ${sessionScope.user }
    <br/>

</body>

  现在发送三个请求,验证结果:

  ①:http://localhost:8080/springMVC/ModelAndView/testModelAndView 说明处理方法返回ModelAndView时,将数据放置在request域中

技术分享

  ②:http://localhost:8080/springMVC/ModelAndView/testMap 将数据放置在request域中。

技术分享

  ③、http://localhost:8080/springMVC1/ModelAndView/testSessionAttributes 说明将数据放在request和session域中。

技术分享

 

5、处理模型数据

原文:http://www.cnblogs.com/lj95801/p/4951441.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!