SpringMVC之ModelAndView

一、SpringMVC输出模型数据的几种常见途径

  1、ModelAndView

1
2
3
4
5
6
7
8
9
10
11
12
13
@Controller
public class SpringmvcDemo {
 
    @RequestMapping(value = "/testModelAndView", method = RequestMethod.GET)
    public ModelAndView testSpringMVC() {
        // 使用ModelAndView的方式
        ModelAndView mav = new ModelAndView();
        mav.addObject("username", "damaomao");
        mav.setViewName("testModelAndView");
        System.out.println("测试ModelAndView");
        return mav;
    }
}

  2、Map<Object,Object>集合

1
2
3
4
5
6
7
8
9
10
11
12
@Controller
public class SpringmvcDemo {
 
    @RequestMapping(value = "/testModelAndView", method = RequestMethod.GET)
    // 使用返回值是String类型,参数为map
    public String testSpringMVC01(Map<String,Object> map) {
        map.put("user01","xiaomao");
        map.put("user02","xiaomaomao");
        map.put("user03","xiaoxiaomaomao");
        return "testModelAndView";
    }
}

  3、Model对象

1
2
3
4
5
6
7
8
9
10
11
12
13
14
@Controller
public class SpringmvcDemo {
 
    @RequestMapping(value = "/testModelAndView", method = RequestMethod.GET)
    // 使用返回值是String类型,参数为Model
    public String testSpringMVC01(Model model) {
        HashMap<String, Object> hashMap = new HashMap<>();
        hashMap.put("user01","haha");
        hashMap.put("user02","hehe");
        hashMap.put("user03","heihei");
        model.addAllAttributes(hashMap);
        return "testModelAndView";
    }
}

  

二、处理Model源码参考

  通过上面源码看出使用上述几种输出模型本质上都是Servlet中的request.getDispatcher.forward(request,response)的方式往域对象中存储值.

 

三、处理View源码参考

  1、一般情况下,控制器方法返回字符串类型的值会被当成逻辑视图名处理

  2、如果返回的字符串中带forward:或redirect:前缀时,SpringMVC 会对他们进行特殊处理:将 forward: 和redirect: 当成指示符,其后的字符串作为URL来处理

    例如:

      redirect:success.jsp:会完成一个到 success.jsp 的重定向的操作

      forward:success.jsp:会完成一个到 success.jsp 的转发操作

 

posted @   变体精灵  阅读(1170)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示