对于使用ModelMap方法的理解

对于使用ModelMap方法的理解

问题描述:

//String 与 ModelMap
public String showView1(Integer userId, ModelMap modelMap){
    String view = "/um/view.jsp";
    User user = new User();
    //模拟数据获取的代码
    if(userId == 1){
        user.setUsername("lily");
    }else if(userId == 2){
        user.setUsername("smith");
    }else if(userId == 3){
        user.setUsername("lina");
    }
    modelMap.addAttribute("u", user);
    return view;
}

方法一开始看,我是有点懵的,因为 return view 和前面一堆代码(除了String view)没有任何联系。后面我自己听了几遍后有了一定的理解,希望老师看一下我理解的是否正确。

尝试过的解决方式:

return view这里确实难以理解,其实这里做的与ModelAndView没有区别。首先难以理解的原因是我们看不到Request对象,也看不到模板引擎做的事情。但是理解主线就能看懂了。

  • 这里String view就是表达即将跳转的地址,使用ModelAndView也是最终要跳转到这个地址,两者是一样的。跳转后就是模板引擎处理转发后的请求,将数据反应到jsp视图页面上。

  • ModelMap对象的addAttribute()和ModelAndView对象的addObject()做的事情也是完全相同,就是为当前的请求添加User对象这个数据。

所以看似return view 和 方法体中获得User再添加User 没有关系,其实背后是通过一个请求对象串联起来,最后这个请求对象会到达return的jsp地址,然后被模板引擎使用并将数据显示再界面上。

不知理解上是否有误?细节上是否有误?


正在回答

登陆购买课程后可参与讨论,去登陆

1回答

同学你好,同学的理解大致是正确的,但是细节有些问题。不过老师这边无法用简单的方式给同学进行解释,需要同学自行学习一下SpringMVC执行流程的源码(不是流程简图,是源码),源码中可以看出两者的本质是相同的,但是执行位置和方式有所不同。

祝学习愉快~

  • 只能卷了 提问者 #1

    这个源码就是跟着debug一步一步的走么?不知道有什么方式可以学习SpringMVC的源码,请问有什么方式呢?

    2023-03-24 18:51:33
  • 好帮手慕小蓝 回复 提问者 只能卷了 #2

    同学你好,如果有源码追踪经验的话,可以使用debug执行,但是这样的阅读效率比较低。建议同学在网上搜索一些相关的课程来系统性的学习一下。

    祝学习愉快~

    2023-03-25 10:15:50
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师