zoukankan      html  css  js  c++  java
  • SpringMVC_处理模型数据

    处理模型数据之ModelAndView

    —SpringMVC提供了以下几种途径输出模型数据:

        - ModelAndView:处理方法返回值类型为ModelAndView时,方法即可通过该对象添加模型数据。

        - Map及Model:入参为org.springframework.ui.Model、org.springframework.ui.ModelMap、java.util.Map时,处理方法返回值时,Map中的数据会自动添加到模型中。

        - @SessionAttributes:将模型中的某个数据暂存到HttpSession中,以便多个请求间可以共享这个属性。

        - @ModelAttribute:方法入参标注该注解后,入参的对象就会放到数据模型中。


    ModelAndView

    - 控制器处理方法的返回值如果为ModelAndView,则其包含视图信息,也包含模型数据信息

    - 添加模型数据:

        —ModelAndView addObject(String attributeName,Object attributeValue)

        —ModelAndView addAllObject(Map<String,?> modelMap)

    - 设置视图:

        —void setView(View view)

        —void setViewName(String viewName)

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


    处理模型数据之Map及Model

    - SpringMVC在内部使用了一个 org.springframework.ui.Model 接口存储模型数据

    - 使用步骤:

        —SpringMVC在调用方法前会创建一个隐含的模型对象作为模型数据的存储容器

        —如果方法的入参为Map或Model类型,SpringMVC会将隐含模型的引用传给这些入参,在方法体内开发者可以通过这个入参对象访问到模型中的所有数据,也可以向模型中添加新的模型数据。

    /**
     * 目标对象可以添加Map类型的参数,也可以是Model类型或MedelMap类型
     * @param map
     * @return
     */
    @RequestMapping("/testMap")
    public String testMap(Map<String,Object> map){
        System.out.println(map.getClass().getName());
        map.put("names", Arrays.asList("Tom","Jerry","Mike"));
        return SUCCESS;
    }
    
    处理模型数据之@SessionAttributes注解

    - 若希望在多个请求之间共用某个模型属性数据,则可以在控制器类上标注一个@SessionAttributes注解,SpringMVC将在模型中对应的属性暂存到HttpSession中

    - @SessionAttributes除了可以通过属性名指定需要放到会话中的属性外,还可以通过模型属性的对象类型指定哪些模型属性需要放到会话中

        —@SessionAttributes(type = User.class)会将隐含模型中的所有类型为User.class的属性添加到会话中

        —@SessionAttributes(value = {“user1”“user2”})

        —@SessionAttributes(types = {User.class,Dept.class})

        —@SessionAttributes(value = {“user1”,“user2”},types = {Dept.class})

    /**
     * @SessionAttributes 除了可以通过属性名,指定需要放到会话中的属性外(实际上使用的是value属性值)
     * 还可以通过模型属性的对象类型指定哪些模板属性需要放到会话中(实际上是使用的是types属性值)
     *
     * 注意:该注解只能放在类的上面,而不是修饰方法上
     *
     * @param map
     * @return
     */
    @RequestMapping("/testSessionAttributes")
    public String testSessionAttributes(Map<String,Object> map){
        System.out.println(map.getClass().getName());
        User user = new User("Tom","Jerry",14,"Mike");
        map.put("user", user);
        return SUCCESS;
    }
    

    ModelAttribute注解使用场景










  • 相关阅读:
    经典论文翻译导读之《Finding a needle in Haystack: Facebook’s photo storage》
    Etcd源码解析(转)
    etcd集群故障处理(转)
    etcd集群部署与遇到的坑(转)
    LeetCode All in One 题目讲解汇总(转...)
    pyinstaller-python->exe
    3个方法解决百度网盘限速(转)
    Tensorflow 教程系列 | 莫烦Python
    分布式存储Seaweedfs源码分析
    解决Java Web项目中Word、Excel等二进制文件编译后无法打开的问题
  • 原文地址:https://www.cnblogs.com/huangzhe1515023110/p/9276065.html
Copyright © 2011-2022 走看看