ModelAndView()
这个构造方法构造出来的ModelAndView不能直接使用,应为它没有指定view,也没有绑定对应的model对象。当然,model对象不是必须的,但是view确实必须的。
用这个构造方法构造的实例主要用来在以后往其中加view设置和model对象。
给ModelAndView实例设置view的方法有两个:setViewName(String viewName) 和 setView(View view)。前者是使用view name,后者是使用预先构造好的View对象。其中前者比较常用。事实上View是一个接口,而不是一个可以构造的具体类,我们只能通过其他途径来获取View的实例。对于view name,它既可以是jsp的名字,也可以是tiles定义的名字,取决于使用的ViewNameResolver如何理解这个view name。
如何获取View的实例以后再研究。
而对应如何给ModelAndView实例设置model则比较复杂。有三个方法可以使用:
addObject(Object modelObject)
addObject(String modelName, Object modelObject)
addAllObjects(Map modelMap)
ModelAndView可以接收Object类型的对象,ModelAndView将它视为其众多model中的一个。当使用Object类型的对象的时候,必须指定一个名字。ModelAndView也可以接收没有明显名字的对象,原因在于ModelAndView将调用spring自己定义的Conventions 类的.getVariableName()方法来为这个model生成一个名字。显然,对model而言,名字是必须的。
Conventions.getVariableName()生成名字的规则是使用对象的类名的小写模式来作model名字。当这个model是集合或数组的时候,使用集合的第一个元素的类名加s来作model的名字。
ModelAndView也可以接收Map类型的对象,ModelAndView将这个Map中的元素视为model,而不是把这个Map本身视为model。但是其他的集合类可以用本身作为model对象。
实际上,ModelAndView对model的支持来自于类ModelMap,这个类继承自HashMap。
分享到:
相关推荐
ModelAndView提供了多个构造方法,以便于开发者根据需要选择合适的构造方法。例如,public ModelAndView()是一个默认的构造方法,用于bean-style的使用;public ModelAndView(String viewName)是一个具有viewName...
设置方式可以通过 ModelAndView 的构造函数设置 view 名称,或者通过 setViewName 方法设置 view 名称。 (2) 将控制器方法中处理的结果数据传递到结果页面,也就是把在结果页面上需要的数据放到 ModelAndView 对象中...
ModelAndView的构造函数允许我们传递一个字符串,这个字符串代表了我们要显示的视图名。视图解析器会根据这个视图名找到对应的视图模板,如JSP或Thymeleaf页面。同时,ModelAndView的`addObject()`方法可以用来添加...
正如其名所表示的那样,`ModelAndView`类同时封装了模型数据(Model)和视图信息(View),使得控制器能够方便地将二者传递给视图层进行渲染。 #### 二、`ModelAndView`的作用 `ModelAndView`的主要作用在于简化...
现在,如果一个类有多个构造器,Spring会自动选择具有最多已知参数的构造器进行依赖注入,简化了代码编写。同时,对于字段注入,Spring 4.3引入了`@Autowired`注解的`required`属性,允许开发者明确指定某些字段是否...
setter注入是通过setter方法在对象创建后将其依赖注入,而构造器注入则是在对象创建时通过构造函数传入依赖。 面向切面编程(AOP)是Spring的另一个重要特性,它允许开发者将关注点分离,特别是那些横切多个对象的...
- **构造器注入**:通过构造函数传入依赖对象。 - **setter注入**:通过setter方法设置依赖对象。 - **接口注入**:通过实现特定接口并由Spring提供实现对象。 ### **2. Spring MVC (模型-视图-控制器)** Spring ...
- **构造器**:如何创建和使用构造器,以及构造器的重载。 - **访问修饰符**:private、default、protected和public的区别与应用场景。 - **异常处理**:理解try-catch-finally结构,以及如何自定义异常。 2. **...
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { // 在控制器方法执行后,但视图渲染前执行 } @Override ...
- **构造器**:了解构造函数的作用,无参构造器、带参构造器及其相互调用。 - **访问修饰符**:public, private, protected, default的使用场景和权限限制。 - **继承与多态**:超类与子类的关系,方法覆盖...
MyBatis Plus提供了一些高级功能,如:自动填充字段、条件构造器、动态SQL等,使得数据库操作变得更加便捷。 三、Spring Boot集成MyBatis Plus 1. 添加依赖:在Spring Boot项目的pom.xml文件中添加MyBatis Plus的...
构造器注入是指通过类的构造器将依赖注入到对象中。这种方式可以确保对象在创建时就具备所有必需的依赖项,从而避免后期注入导致的问题。构造器注入通常适用于那些必填的依赖项。 #### 六、Bean定义文件进阶读取 ...
ModelAndView类提供了多种构造函数,方便开发者根据不同的情况创建实例。它还可以绑定模型数据,模型数据通常是一个Map或JavaBean对象。在控制器方法中,开发者可以添加模型数据到ModelAndView对象中,这样在渲染...
构造器注入在创建对象时传递依赖,而设值注入则是在对象创建后通过setter方法设置依赖。 【面向切面编程】 面向切面编程(AOP)是Spring提供的另一重要特性,它允许我们把关注点分离,将横切关注点(如日志、事务...
6. **@Autowired**:Spring 自动装配注解,用来自动注入依赖对象,可以用于字段、方法和构造器。 7. **ViewResolver**:视图解析器,它根据 ModelAndView 中的视图名查找实际的视图,如 JSP 页面。 8. **Model**:...
- **模型与视图**:分析`ModelAndView`的构造和使用,以及如何与视图解析器`ViewResolver`交互。 - **AOP和Interceptor**:研究`HandlerInterceptor`接口,了解如何实现拦截器并注册到Spring MVC中,以及在请求...
- **构造器**:构造函数的作用,构造器的重载和隐藏。 - **访问修饰符**:public、private、protected、default的使用场景。 - **抽象类与接口**:两者之间的区别,多继承与多实现。 - **内部类**:匿名内部类,...
- **无参构造器**:JavaBean需要提供一个无参数的构造器,以便于实例化。 - **属性**:属性是JavaBean的核心,用于存储数据,通常与数据库中的字段对应。 - **序列化**:为了持久化JavaBean对象,通常需要实现`...