`ModelAndView` 是 Spring MVC 中一个重要的类,用于从控制器向视图传递数据。它结合了模型和视图的概念,使得数据的传递更加直观和方便。以下是 `ModelAndView` 的基本用法:
### 1. 创建 ModelAndView 对象
在控制器方法中,你可以创建一个 `ModelAndView` 对象来封装模型数据和视图名称。
```java
ModelAndView modelAndView = new ModelAndView();
```
### 2. 添加模型数据
使用 `ModelAndView` 对象的 `addObject` 方法可以向模型中添加数据。这些数据可以在视图中被访问。
```java
modelAndView.addObject("key", value); // key 是属性名,value 是对应的值
```
### 3. 设置视图名称
使用 `setViewName` 方法设置要跳转到的视图名称。这个名称通常是视图解析器解析后的视图文件名(不包含后缀)。
```java
modelAndView.setViewName("viewFileName"); // 如 "helloWorld" 将被解析为 /views/helloWorld.jsp(假设有这样的配置)
```
### 4. 返回 ModelAndView 对象
将创建并配置好的 `ModelAndView` 对象返回给调用者(通常是 Spring MVC 的 DispatcherServlet)。Spring MVC 会根据 `ModelAndView` 中的视图名称找到对应的视图,并使用模型数据渲染视图。
```java
return modelAndView;
```
### 示例代码:
假设你有一个简单的控制器方法,用于展示一个用户信息页面并传递用户数据。你可以这样做:
```java
@Controller
public class UserController {
@RequestMapping("/showUser")
public ModelAndView showUser(User user) {
ModelAndView modelAndView = new ModelAndView();
modelAndView.addObject("user", user); // 添加用户数据到模型中
modelAndView.setViewName("userView"); // 设置视图名称,例如 userView.jsp
return modelAndView; // 返回 ModelAndView 对象给 Spring MVC 处理
}
}
```
在 `userView.jsp` 视图中,你可以通过 EL 表达式 `${user}` 来访问传递过来的用户数据。这样,控制器、模型和视图之间的交互就完成了。