在 spring 框架的控制器中,我们经常在事件处理时想返回处理对象和实现重定向跳转,平时可能经常是在 control 里直接返回对象甚至是String,但如果是多个对象的话或者还需要重定向的话就麻烦了,使用 modelAndView 就可以变得非常轻松。
modelAndView 表示的就是 MVC模式中的 model 和 view,方便一次返回我们想要的 model 和 view 对象,它有7种构造方法,方便我们处理。如下代码:
Result result = testService.service();
ModelAndView mav = new ModelAndView();
mav.setViewName("/test");
mav.addObject(result);
使用 setViewName 方法设置 view 对象,相对路径是从服务器的网页根目录开始寻找的,即我们经常使用的WEB-INF/views目录,而非程序的根目录。
ModelAndView 对象实例化后不能直接使用,因为它必须指定 view,否则它不知道要定向到哪个页面,返回的 model 也无法获取,而 model 是可选的。返回 view 对象有两种方法,setViewName 和 setView,一个是直接传入 view 对象的地址,一个是 view 对象本身,对象本身需要在之前进行实例化。
非常值得注意的是,addObject重现了两个方法,addObject(result) 和 addObject("resultName", result),即可以对 model 指定命名,在页面对 model 进行处理时,如果指定了命名,则可以直接调用resultName,如果没有指定,系统会去判断 result 对象的类型,根据类型匹配到的类再取该类的实例化对象,根据此对象去调用参数,而非传入的 result 对象,举个例子:
public class Result {
private String code;
}
Result re = testService.service();
ModelAndView mav = new ModelAndView();
mav.setViewName("/test");
mav.addObject(re);
此时不指定 addObject 参数的命名,在页面调用时如果使用 re.code 会得不到值,因为 modelAndView 对象将 model 加载到页面后会转化成对应类的对象,页面无法识别 re,因此只能使用 result.code。如果使用命名就避免了这个问题:mav.addObject("re", re);
通过使用多个 addObject 方法,modelAndView 对象可以把更多的 model 返回页面处理。
使用过程中的一点小小理解。
分享到:
相关推荐
《精通Spring MVC4》这本书是Java开发者深入理解并掌握Spring MVC框架的重要参考资料。Spring MVC作为Spring框架的一部分,是构建现代Web应用程序的首选工具之一。它提供了模型-视图-控制器(MVC)架构模式,帮助...
在本示例中,"spring+spring mvc" 提供了一个简单的小型应用实例,用于演示如何集成并使用这两个框架。 首先,Spring MVC 的核心组件包括 DispatcherServlet、Controllers、Models、Views 和 HandlerMappings。...
在当今的Java Web开发中,Spring MVC 和 MyBatis 是两个非常重要的框架。Spring MVC 作为Spring框架的一部分,负责处理Web请求和响应,提供了一种优雅的方式来组织和解耦应用程序的业务逻辑。而MyBatis 则是一个优秀...
在本文中,我们将探讨如何手写一个简单的Spring MVC框架,并理解其核心组件和工作流程。 1. **模型(Model)**:模型是应用程序的核心部分,包含了业务逻辑和数据。在Spring MVC中,我们通常创建JavaBeans或POJO...
Spring MVC是Spring框架的一个核心模块,专为构建Web应用程序而设计。它提供了模型-视图-控制器(MVC)架构,使开发者能够有效地分离业务逻辑、数据处理和用户界面。在"Spring MVC 4.2.3"版本中,我们看到了一系列的...
Spring Web MVC是Spring框架的一部分,专门用于构建Web应用程序。它为开发者提供了一种优雅的方式来处理HTTP请求和响应,实现模型-视图-控制器(MVC)设计模式。在这个入门技术源码中,我们可以深入理解Spring MVC的...
下面将详细介绍这三个框架的核心概念、整合方式以及在实际项目中的应用。 Spring框架是Java企业级应用开发的基石,它以其强大的IoC(Inversion of Control,控制反转)和AOP(Aspect Oriented Programming,面向切...
同时,Spring的MVC框架支持数据绑定、模型验证、异常处理等功能,使Web开发更加便捷。 在事务管理方面,Spring提供了编程式和声明式两种事务管理方式。编程式事务管理需要在代码中显式调用开始、提交、回滚等事务...
2. **AOP**:Spring的AOP模块允许开发者定义横切关注点,如日志记录、事务管理等,这些关注点可以在不修改业务逻辑的情况下被织入到应用程序中。在这个项目中,日志输出使用了Log4j,Spring可能被用来配置Log4j的...
此外,随着技术的发展,Spring Boot和Spring Data JPA等新兴技术逐渐成为主流,它们在简化配置、提升开发效率方面更具优势,但SSH框架仍然在很多项目中被广泛使用,对于理解现代Java Web开发有着重要的学习价值。
在eesy_day03sping项目中,可能会包含JUnit或Mockito等测试框架的使用,这是Spring Test提供的测试支持。Spring Test使得我们能够轻松地创建和运行针对Spring应用的单元测试和集成测试。 8. **Spring Security** ...
6. **Web MVC**:Spring提供了Web MVC框架,用于构建RESTful Web服务。它包含了DispatcherServlet、ModelAndView、Controllers等概念,帮助开发者分离视图、控制和业务逻辑。 7. **事务管理**:Spring提供了一套...
Spring MVC是Spring框架的一个核心模块,专门用于构建Web应用程序。它提供了一个模型-视图-控制器(MVC)架构,使开发者能够将业务逻辑、数据处理和用户界面分离,从而提高代码的可维护性和可测试性。让我们深入探讨...
在本压缩包中,我们找到了一个名为"sping_lib"的文件,这通常包含了Spring框架所需的库文件。 首先,`spring.jar`是Spring框架的基础核心库,包含了IoC容器的主要实现。IoC使得应用程序不再负责对象的创建和管理,...
5. **研究MVC框架内部**:Spring MVC的DispatcherServlet、Controller、ModelAndView等组件的协同工作,以及视图解析的过程。 6. **理解事务管理**:Spring如何提供透明的事务管理,包括编程式和声明式事务。 7. *...
在实际开发中,SSM框架的配置通常包括Spring的配置文件(如 applicationContext.xml),SpringMVC的配置文件(如 servlet-context.xml),以及MyBatis的配置文件(mybatis-config.xml)和Mapper接口及XML映射文件。...
在结合Spring MVC这个强大的MVC框架后,可以构建出功能完备、结构清晰的Web应用程序。下面将详细阐述这两个技术在项目中的应用及其重要知识点。 首先,让我们来看看Spring MVC。Spring MVC是Spring框架的一部分,...
在本项目中,我们主要探讨的是如何将Spring MVC、Spring框架和Spring JDBC这三大核心组件进行整合,构建一个完整的Java Web应用程序。这个整合Demo旨在帮助开发者理解这些技术的协同工作方式,以及如何在实际开发中...
5. **Web MVC框架**:Spring2的Web MVC模块提供了模型-视图-控制器架构,用于构建Web应用。它允许自定义HandlerMapping和ViewResolver,实现灵活的URL映射和视图解析。 6. **Spring AOP的注解支持**:在Spring2中,...
在本文中,我们将深入探讨Spring框架的几个关键知识点。 1. **依赖注入(Dependency Injection, DI)**:Spring的核心特性之一,它允许对象之间的依赖关系在运行时通过外部容器(即Spring IoC容器)来管理,而不是...