SpringMVC中Model,ModelAndView,ModelMap的区别

本文介绍了SpringMVC中Model、ModelAndView和ModelMap的区别。Model仅用于传输数据,不涉及业务寻址;而ModelAndView可以设定业务寻址,能够指定请求的静态文件。ModelAndView通过构造函数指定页面名称并使用redirect或forward方法进行跳转。ModelMap作为接口,其作用类似于设置数据传递到前端页面。文章通过源码分析和使用示例详细阐述了这三者在设置转向地址和传递数据方面的不同应用。
摘要由CSDN通过智能技术生成

前言

springMVC 请求处理方法返回的参数类型中,最重要就是 ModelModelAndView了。使用 ModelModelAndView 这两者之间有着很大的区别

  • Model 只是用来传输数据的,并不会进行业务的寻址
  • ModelAndView 却是可以进行业务寻址的,就是设置对应的要请求的静态文件,这里的静态文件指的是类似 jsp 的文件

Model

Model 是一个接口,实现类为 ExtendedModelMapModelMapModel 本身不能设置页面跳转的 url 地址别名或者物理跳转地址,我们可以通过控制器方法的返回值 renturn 来设置跳转 urlModel 是用 addAttribute() 方法设置返回的值的

Model 源码

public interface Model {
   
    Model addAttribute(String var1, @Nullable Object var2);

    Model addAttribute(Object var1);

    Model addAllAttributes(Collection<?> var1);

    Model addAllAttributes(Map<String, ?> var1);

    Model mergeAttributes(Map<String, ?> var1);

    boolean containsAttribute(String var1);

    Map<String, Object> asMap();
}


public class ExtendedModelMap extends ModelMap implements Model {
   
	// ......
}

使用示例

Controller 控制器层

@RequestMapping(path = "/home", method = RequestMethod.GET)
public String index(@NotNull Model model) {
   

	/* ------------置顶数据查询(只展示 4 条数据)------------*/
	PagingParameterPostVO topping = new PagingParameterPostVO();
	topping.setPageNum(0);
	topping.setPageSize(pagingProperties.getTopPageNum());
	List<PostVO> postVOS = postService.selectPostVOTop(topping);
	model.addAttribute("postVOS", postVOS);
	return "index";
}

页面渲染

<ul class="fly-list">
	<!-- thymeleaf模板引擎:使用 th:each 遍历 -->
    <li th:each
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值