SpringMVC框架 -- ModelAndView的用法

一、ModelAndView概述

简单理解它是将后台返回的数据传递给View层,同时包含一个要访问的View层的URL地址。当控制器处理完请求后,通常控制器会将包含视图名称以及一些模型属性的ModelAndView对象返回给DispatcherServlet。


二、ModelAndView的方法

常用ModelAndView方法:

  • addObject():添加模型数据用
  • setViewName():设置视图

ModelAndView 对象有两个个作用:

1. 将底层获取的数据进行封装

将控制器方法中处理的结果数据传递到结果页面,也就是把在结果页面上需要的数据放到ModelAndView对象中即可。

通过key/value的方式绑定数据
modelAndView.addObject(String attributeName, Object attributeValue);

2. 设置转向地址

ModelAndView view = new ModelAndView("product");

或者

modelAndView.setViewName("product");

三、ModelAndView使用示例

Spring搭建的后台一般分为分发功能的Controller层,逻辑判断的Service层,数据库交互的Dao层。ModelAndView 一般在Controller层作为结果类型返回,其内部的view部分指定返回的页面,model指定返回的参数,以下是示例代码:

 //指定访问此接口方式和地址
@RequestMapping(method=RequestMethod.GET ,value = "/getShareInfo")    
public ModelAndView  getShareInfo(Integer liveBroadcastId,String language,Integer userId) {

	//指定页面名称为share
	ModelAndView mv = new ModelAndView();       
	ResultTemplateModel<Object> liveModel = liveBroadcastService.getLiveById(liveBroadcastId, language, userId);
	 //得到结果对象
	LiveDetailInfoModel liveInfo = (LiveDetailInfoModel) liveModel.getData();    

	//从结果对象中取出参数放入 ModelAndView 中
	mv.addObject("replayName", liveInfo.getReplayName());    
	mv.addObject("startPlayTime()", liveInfo.getStartPlayTime()); 
	mv.addObject("address", liveInfo.getAddress()); 
	mv.addObject("attentionState", liveInfo.getAttentionState());
	mv.setViewName("share");
	return mv;       
}

在springMVC.xml中的配置

<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
	<!-- 给view返回的指定页面名称添加前后缀 -->
	<property name="prefix" value="/WEB-INF/views/" />
	<property name="suffix" value=".jsp" />
</bean>

指定的视图名称为share,在返回之前,InternalResourceViewResolver会加上前后缀,也就是找到/WEB-INF/views/share.jsp这个页面,然后将设置在ModelAndView中的参数拼入到share.jsp中,JSP页面中以 JSTL表达式来接收在ModelAndVIew中设置的参数,这个过程也就是ModelAndView的渲染过程。


参考:Model、ModelMap和ModelAndView的使用详解

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值