ModelAndView

2024-06-19 18:04
文章标签 modelandview

本文主要是介绍ModelAndView,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

是SpringMVC框架中的重要类,结合了模型数据和视图信息,将控制器处理结果中的数据和视图封装在一起,以便将其传递给视图层进行渲染

ModelAndView`的组成部分

ModelAndView类主要由以下几个部分组成:

  1. Model:存放数据的部分,可以理解为一个Map(键值对),这些数据会被视图层使用,用来渲染页面。
  2. View:指定渲染这些数据的视图名。视图可以是JSP、Thymeleaf模板、Freemarker模板等。
  3. View Object:直接使用视图对象而不是视图名。这种情况较少见,一般用视图名。

常见的构造方法

ModelAndView类有多种构造方法,便于不同的使用场景:

1.无参数构造方法:

ModelAndView modelAndView = new ModelAndView();

2.指定视图名的构造方法:

ModelAndView modelAndView = new ModelAndView("viewName");

3.指定视图名和单个模型数据的构造方法:

ModelAndView modelAndView = new ModelAndView("viewName", "modelName", modelObject);

4.指定视图名和完整模型数据的构造方法

ModelAndView modelAndView = new ModelAndView("viewName", modelMap);

方法详解

设置视图

  • setViewName(String viewName): 设置视图名。

    modelAndView.setViewName("home");
    
  • setView(View view): 设置视图对象。

    View view = new InternalResourceView("/WEB-INF/jsp/home.jsp");
    modelAndView.setView(view);
    

添加模型数据

  • addObject(String attributeName, Object attributeValue): 添加单个模型数据。

    modelAndView.addObject("message", "Hello, Spring MVC!");
    
  • addAllObjects(Map modelMap): 添加多个模型数据。

    Map<String, Object> modelMap = new HashMap<>();
    modelMap.put("username", "john_doe");
    modelMap.put("email", "john.doe@example.com");
    modelAndView.addAllObjects(modelMap);
    

获取模型和视图信息

  • getModel(): 返回模型数据的Map。

    Map<String, Object> model = modelAndView.getModel();
    
  • getViewName(): 返回视图名。

    String viewName = modelAndView.getViewName();
    
  • getView(): 返回视图对象。

    View view = modelAndView.getView();
    

详细示例

如何在Spring MVC控制器中使用ModelAndView

@Controller
public class UserController {@GetMapping("/userProfile")public ModelAndView userProfile() {// 创建ModelAndView对象ModelAndView modelAndView = new ModelAndView();// 设置视图名为"profile"modelAndView.setViewName("profile");// 添加模型数据modelAndView.addObject("username", "john_doe");modelAndView.addObject("email", "john.doe@example.com");// 返回ModelAndView对象return modelAndView;}
}

视图代码(例如profile.jsp

<!DOCTYPE html> 
<html><head><title>User Profile</title> </head> <body>     <h1>User Profile</h1>     <p>Username: ${username}</p>     <p>Email: ${email}</p> </body> 
</html>

ModelAndView是Spring MVC框架中的核心类,用于在控制器中同时传递模型数据和视图信息。通过ModelAndView,开发者可以方便地将处理结果中的数据传递给视图层,并指定使用哪个视图来渲染这些数据。这样不仅简化了代码结构,还实现了数据和视图的分离,增强了代码的可维护性和扩展性。

这篇关于ModelAndView的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1075752

相关文章

springMVC 处理返回数据:Map、Model、ModelMap、ModelAndView。

MapModelModelMapModelAndView 在处理结果上,4者并没有太多区别。但使用方法略有不同: 1、2、3在方法参数中声明,指定一个该类型的对象: 后台:@RequestMapping("/test")public String test(Map<Sting, Object> map, Model model, ModelMap modelMap){map.put("s1

Springmvc的return modelAndView和return “redirect:/index“

第一种:返回modelAndView <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <!-- 下面这句需要在WEB-INF中增加两个包:standard.jar and jstl.jar --><property name="viewCl

springmvc学习笔记(9)——ModelAndView

ModelAndView ModelAndView 从字面上来看,就是模型和视图。我们在Controller中,可以返回一个页面,比如return "hello" 就是返回一个hello.jsp页面。其实我们也可以返回ModelAndView这个对象. ModelAndView 这个对象中可以保存你要转发的页面以及你要返回的数据。 假设现在有一个用户想要你打开一个叫hello.jsp的页面

关于springMVC中ModelAndView的问题

本人在学spingmvc中 遇到一个很奇怪的问题,modelAndView.setViewName("success");不起作用返回的始终是@requestMapping上的参数。后来发现提交的方式有问题。 用<a href="user/login.do">登录</a> 返回的会是 user/login.jsp modelAndView 不会起作用,不管怎么改。 但是改成表单就可以了。

ModelAndView对象

当控制器处理完请求时,通常会将包含视图名称或视图对象以及一些模型属性的ModelAndView对象返回到DispatcherServlet。 因此,经常需要在控制器中构造ModelAndView对象。ModelAndView类提供了几个重载的构造器和一些方便的方法, 让你可以根据自己的喜好来构造ModelAndView对象。这些构造器和方法以类似的方式支持视图名称和视图对象。 当你

ModelMap、ModelAndView和@Modelattribute的区别

首先介绍ModelMap和ModelAndView的作用  ModelMap  ModelMap对象主要用于传递控制方法处理数据到结果页面,也就是说我们把结果页面上需要的数据放到ModelMap对象中即可,他的作用类似于request对象的setAttribute方法的作用,用来在一个请求过程中传递处理的数据。通过以下方法向页面传递参数:  addAttribute(String key,Obj

007 springboot整合mybatis-plus 增删改查 ModelAndView jsp 分页

文章目录 MybatisplusConfig.javaReceiveAddressController.javaReceiveAddress.javaReceiveAddressMapper.javaReceiveAddressServiceImpl.javaIReceiveAddressService.javaServerResult.javaServletInitializer.java

SpringMVC利用return new ModelAndView(new RedirectView(xxx.do), Map map)重定向传递多参数

接触SpringMVC不是很久,发现了一个好用的方法,重定向时可以通过一个Map传递给下一个控制器。 Map map= new HashMap(); map.put("userName", "yangjinde"); map.put("pwd", "yjd"); return new ModelAndView(new RedirectView("xxx.do"), map); 则在下个控

ModelAndView返回json类型数据

ModelAndView返回json类型数据 一.自定义bean,手动在返回数据时将数据json化 1.自定义类JacksonUtil.java,类中实现tojson方法(即将数据转成json类型); 2.自定义类JsonView 继承 AbstractView 3.xml中配置bean:jsonView 4.配置bean class为spring的BeanNameViewResolv

Spring中ModelAndView源码

Spring中ModelAndView源码 package org.springframework.web.servlet;import java.util.Map;import org.springframework.ui.ModelMap;import org.springframework.util.CollectionUtils;import org.springfra