美文网首页
springmvc 04 模型视图(ModelAndView)

springmvc 04 模型视图(ModelAndView)

作者: 小小机器人 | 来源:发表于2016-10-19 14:28 被阅读122次

    被@RequestMapping注解修饰的方法最终于都会返回一个ModelAndView对象;
    该对象携带视图和数据

    @RequestMapping修饰的方法可以返回的类型

    void
    String
    Map
    ModelAndMap

    @RequestMapping修饰void返回值的方法

    <a href="springmvc/testModelAndViewVoid">testModelAndViewVoid</a><br><br>
    
        @RequestMapping("/testModelAndViewVoid")
        public void testModelAndViewVoid(){
            /* 返回值为void时
             * view:前端页面请求的路径+InternalResourceViewResolver
             * 添加的前缀和后缀:如"WEB-INF/views/springmvc/testModelAndViewVoid.jsp"
             * 
             * model: Map或ModelAndView*/
        }
    

    @RequestMapping修饰Object返回值的方法

    <a href="springmvc/testModelAndViewObject">testModelAndViewObject</a><br><br>
    
        @RequestMapping("/testModelAndViewObject")
        public Object testModelAndViewObject(){
            /* 返回值是一个对象类型时
             * view:前端页面请求的路径+InternalResourceViewResolver
             * 添加的前缀和后缀:如"WEB-INF/views/springmvc/testModelAndViewObject.jsp
             * 
             * model:Object(同时也会被添加到request域中);
             * */
            return new Object();
        }
    

    @RequestMapping修饰Map返回值的方法

    <a href="springmvc/testModelAndViewMap">testModelAndViewMap</a><br><br>
    
        /**SpringMVC在调用方法前会创建一个隐藏的模型对象作为模型数据在存储容器。
         * 如果方法的入参 为Map或Model类型,SpringMVC会将隐藏的模型的引用传递给这些入参。
         * 在该方法中我们可以往访问到该模型中的所有数据也可以往模型中添加数据*/
        @RequestMapping("/testModelAndViewMap")
        public Map<String,Object> testModelAndViewMap(Map<String,Object> map){
            /* 返回值是Map类型时
             * view:前端页面请求的路径+InternalResourceViewResolver
             * 添加的前缀和后缀:如"WEB-INF/views/springmvc/testModelAndViewMap.jsp
             * 
             * model:Map(同时也会被添加到request域中);
             * */
            map.put("map-obj", new Object());
            return map;
        }
    

    @RequestMapping修饰String返回值的方法

    <a href="springmvc/testModelAndViewString">testModelAndViewString</a><br><br>
    
        @RequestMapping("/testModelAndViewString")
        public String testModelAndViewString(Map<String,Object> map){
            /* 返回值是Map类型时
             * view:'String'+InternalResourceViewResolver
             * 添加的前缀和后缀:如"WEB-INF/views/springmvc/'String'.jsp
             * 
             * model:Map/ModelAndView(同时也会被添加到request域中);
             * */
            map.put("string_obj", new Object());
            return "testModelAndView";
        }
    
    testModelAndViewString:${requestScope.string_obj}<br><br>
    

    @RequestMapping修饰ModelAndView返回值的方法

        <a href="springmvc/testModelAndView">testModelAndView</a><br><br>
    
        @RequestMapping("/testModelAndView")
        public ModelAndView testModelAndView(){
            /* 返回值是Map类型时
             * view:前端页面请求的路径+InternalResourceViewResolver
             * 添加的前缀和后缀:如"WEB-INF/views/springmvc/testModelAndViewMap.jsp
             * 
             * model:ModelAndView(同时也会被添加到request域中);
             * */
            ModelAndView modelView = new ModelAndView("testModelAndView");
            modelView.addObject("modelAndView_obj", new Object());
            return modelView;
        }
    }
    
    
        testModelAndView:${requestScope.modelAndView_obj}<br><br>
    

    @SessionAttributes
    spring允许我们有选择地指定 ModelMap 中的哪些属性需要转存到 session 中;
    注意:@SessionAttributes只有用来修饰类,不能修饰方法

    @SessionAttributes(value={"user"},types={String.class})
    /*这指明了:
     * modelMap中添加的属性中如果key=="uesr"的会被添加到session中
     * modelMap中添加的属性中如果其类型为String类型会被添加到session中*/
    public class Handler 
    
    <a href="springmvc/testSessionAttributes">testSessionAttributes</a>
    
        @RequestMapping("/testSessionAttributes")
        public String testSessionAttributes(Map<String,Object> map){
            map.put("user",new User("Davis","123",22,null));
            map.put("username", "Smith");
            return SUCCESS;
        }
    
        request->user:${requestScope.user}<br>
        session->user:${sessionScope.user}<br>
        request->username:${requestScope.username}<br>
        session->username:${sessionScope.username}<br>
    

    相关文章

      网友评论

          本文标题:springmvc 04 模型视图(ModelAndView)

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