美文网首页
处理模型数据

处理模型数据

作者: 窝是秃头小怪兽 | 来源:发表于2019-01-22 14:51 被阅读0次

    SpringMVC提供了四种途径输出模型数据

    1.ModelAndView
    处理方法返回值类型是ModelAndView时,方法体即可通过该对象添加模型数据
    @RequestMapping("/testModelAndView")
    public ModelAndView testModelAndView(){
       String viewName=INDEX;
       ModelAndView modelAndView = new ModelAndView(viewName);
       modelAndView.addObject("time", new Date());
       return modelAndView;
    }
    
    time:${requestScope.time}
    
    requestScope:

    是EL表达式中的一个隐含对象,类似request,如:${requestScope.time} 表示在request域中取得time属性所对应的值,相当于request.getAttribute(“time”)

    <%= request.getAttribute("time") %>
    

    2.Map及Model

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

    在调用方法前会创建一个隐含的模型对象作为模型数据的存储容器,如果方法的入参为Map或Model类型,SpringMVC会将隐含模型的引用传递给这些入参,方法体内,可以通过这个入参对象访问到模型中的所有数据,也可以向模型中添加新的属性数据
    图片.png
    @RequestMapping("/testMap")
    public String testMap(Map<String,Object> map){
        map.put("names", Arrays.asList("jack","david","sufei"));
        return INDEX;
    }
    
    names:${requestScope.names}
    

    3.SessionAttributes

    在多个请求之间公共某个模型属性数据,可以在控制器类上标注一个@SessionAttributes ,springMVC将在模型中对应的属性暂存到HttpSession中

    除了可以通过属性名指定需要放到会话中的属性 外,还可以通过模型属性的对象类型指定哪些属性需要放到会话中
    @RequestMapping("/testSessionAttributes")
    public String testSessionAttributes(Map<String,Object> map){
        User user=new User("tom","123456",new Address("guiping","guangxi"));
        map.put("user", user);
        map.put("school", "beida");
        return INDEX;
    }
    
    user:${sessionScope.user}
    
    school:${sessionScope.school}
    
    @SessionAttributes(value = {"user"},types = {String.class})
    
    @SessionAttributes该注解只能放在类上不能修饰方法!!!
    @SessionAttributes(type=User.class)
    @SessionAttributes(value={"user1","user2"})
    @SessionAttributes(type={User.class,String.class})
    @SessionAttributes(value={"user1","user2"},type={User.class,String.class})
    

    相关文章

      网友评论

          本文标题:处理模型数据

          本文链接:https://www.haomeiwen.com/subject/kqlqjqtx.html