一、什么是ModelAndView
ModelAndView是Spring MVC 中的一个类,它作为具有模型数据和视图名称的持有者,可以向视图传递数据,并指示哪个视图显示这些数据。通俗点讲,它是处理请求时封装数据和返回视图的对象。
在控制器方法中,我们可以创建ModelAndView对象,然后将模型数据添加到该对象中,最终将视图名称和ModelAndView对象返回给DispatcherServlet并响应给客户端。基于这种方式,我们可以使用ModelAndView对象添加、获取模型数据,以及指定模型数据和视图名称,从而实现数据和视图之间的传递和绑定。
二、ModelAndView的优点
ModelAndView 主要的优点是它能够将模型数据和视图名称指定在一个对象中,简化了控制器与视图的数据传递,同时也提升了代码的可读性和可维护性。在开发过程中,ModelAndView同样适用于复杂业务场景,其中数据和视图会被传递到多个地方,此时可以将ModelAndView设计成一个公用的数据模型,方便处理大量的数据和视图。
三、如何使用ModelAndView
在使用SpringMVC进行Web应用程序开发时,ModelAndView承担了很多的工作,我们可以通过以下步骤操作:
1.在控制器方法中创建一个新的ModelAndView对象
ModelAndView modelAndView = new ModelAndView();
2.向ModelAndView添加模型数据
将需要传递给视图的模型数据添加到ModelAndView对象中。使用addObject的方法可以指定对象的名称和其对应的值。该方法可重载,可以添加各种类型的值。
modelAndView.addObject("name","张三"); modelAndView.addObject("age",18);
3.设置视图名称
使用setViewName的方法为ModelAndView设置视图名称。该方法传入一个视图名称字符串,SpringMVC根据该名称查找真正的视图,例如jsp页面。
modelAndView.setViewName("hello");
4.将ModelAndView传递给DispatcherServlet
在控制器方法返回ModelAndView对象。如果控制器方法返回一个视图名称,那么SpringMVC将使用该名称查找真正的视图。
return modelAndView;
四、示例代码
控制器方法
@RequestMapping("/hello") public ModelAndView showMessage(){ ModelAndView modelAndView = new ModelAndView(); modelAndView.setViewName("hello"); modelAndView.addObject("name","张三"); modelAndView.addObject("age",18); return modelAndView; }
视图hello.jsp
<%@ page contentType="text/html; charset=UTF-8" language="java" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>hello</title> </head> <body> <h1>Hello,<%=request.getAttribute("name")%>,<%=request.getAttribute("age")%></h1> </body> </html>
我被ModelAndView深深吸引了,你呢?
原创文章,作者:QXLWV,如若转载,请注明出处:https://www.506064.com/n/369052.html