springmvc 04 模型视图(ModelAndView)

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

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

void
String
Map
ModelAndMap

@RequestMapping修饰void返回值的方法

testModelAndViewVoid

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

@RequestMapping修饰Object返回值的方法

testModelAndViewObject

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

@RequestMapping修饰Map返回值的方法

testModelAndViewMap

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

@RequestMapping修饰String返回值的方法

testModelAndViewString

    @RequestMapping("/testModelAndViewString")
    public String testModelAndViewString(Map 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}

@RequestMapping修饰ModelAndView返回值的方法

    testModelAndView

    @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}

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

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

你可能感兴趣的:(springmvc 04 模型视图(ModelAndView))