spring中Model、ModelMap、ModelAndView的用法

1. Model(org.springframework.ui.Model)

可以向页面传递参数,但不可以跳转url。

前端取参数:

${requestScope.user.loginname }

例:(@ModelAttribute修饰的方法会先于login调用,它把请求参数值赋给对应变量。可以向方法中的Model添加对象,前提是要在方法中加入一个Model类型的参数。)

@RequestMapping(value="/login1new")
public String login(Model model, @ModelAttribute User2 user){
    user.setUsername("测试2");
    System.out.println(user.toString());
    model.addAttribute("user", user);
    return "result1";
}

上面的代码等价于:

@ModelAttribute
public void userModel(String loginname,String password,Model model){
    logger.info("userModel");
    // 创建User对象存储jsp页面传入的参数
    User2 user = new User2();
    user.setLoginname(loginname);
    user.setPassword(password);
    // 将User对象添加到Model当中
    model.addAttribute("user", user);
}
    
@RequestMapping(value="/login1")
public String login(Model model){
    logger.info("login");
    // 从Model当中取出之前存入的名为user的对象
    User2 user = (User2) model.asMap().get("user");
    System.out.println(user);
    // 设置user对象的username属性
    user.setUsername("测试");
    return "result1";
}

2. ModelMap(org.springframework.ui.ModelMap)

与model相差不大,例:

@ModelAttribute
public void userMode2(String loginname,String password,ModelMap modelMap){
    logger.info("userMode2");
    // 创建User对象存储jsp页面传入的参数
    User2 user = new User2();
    user.setLoginname(loginname);
    user.setPassword(password);
    // 将User对象添加到ModelMap当中
    modelMap.addAttribute("user", user);
}
    
@RequestMapping(value="/login2")
public String login2(ModelMap modelMap){
    logger.info("login2");
    // 从ModelMap当中取出之前存入的名为user的对象
    User2 user = (User2) modelMap.get("user");
    System.out.println(user);
    // 设置user对象的username属性
    user.setUsername("测试");
    return "result2";
}

前端取:

${requestScope.user.loginname }

3. ModelAndView(org.springframework.web.servlet.ModelAndView)
ModelAndView对象有两个作用:
(1) 设置url地址(这也是ModelAndView和ModelMap的主要区别。
(2) 向页面传递参数。

例:

@Controller
public class User3Controller{
    private static final Log logger = LogFactory.getLog(User3Controller.class);
    
    @ModelAttribute
    public void userMode3(String loginname,String password,
             ModelAndView mv){
        logger.info("userMode3");
        User2 user = new User2();
        user.setLoginname(loginname);
        user.setPassword(password);
        // 将User对象添加到ModelAndView的Model当中
        mv.addObject("user", user);
    }
    
    @RequestMapping(value="/login3")
     public ModelAndView login3(ModelAndView mv){
        logger.info("login3");
        // 从ModelAndView的Model当中取出之前存入的名为user的对象
        User2 user = (User2) mv.getModel().get("user");
        System.out.println(user);
        // 设置user对象的username属性
        user.setUsername("测试");
        // 地址跳转,设置返回的视图名称
        mv.setViewName("result3");
        return mv;
    }
}

前端取:

${user.loginname}

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值