IT评测·应用市场-qidao123.com

标题: Java直通车系列15【Spring MVC】(ModelAndView 使用) [打印本页]

作者: 星球的眼睛    时间: 2025-3-9 01:24
标题: Java直通车系列15【Spring MVC】(ModelAndView 使用)
目录
1. ModelAndView 概述
2. ModelAndView 的主要属性和方法
主要属性
主要方法
3. 场景示例
示例 1:简单的 ModelAndView 使用
示例 2:使用 ModelAndView 处理列表数据
示例 3:使用 ModelAndView 处理异常情况


1. ModelAndView 概述

在 Spring MVC 中,ModelAndView 是一个非常重要的类,它用于封装模型数据和视图信息,是控制器(Controller)将处理效果转达给视图层的一种常用方式。详细来说:

2. ModelAndView 的主要属性和方法

主要属性


主要方法


3. 场景示例

示例 1:简单的 ModelAndView 使用

以下是一个简单的 Spring MVC 控制器示例,演示了如何使用 ModelAndView 转达数据和指定视图:
  1. import org.springframework.stereotype.Controller;
  2. import org.springframework.web.bind.annotation.GetMapping;
  3. import org.springframework.web.servlet.ModelAndView;
  4. @Controller
  5. public class HelloController {
  6.     @GetMapping("/hello")
  7.     public ModelAndView sayHello() {
  8.         // 创建 ModelAndView 对象,并指定视图名称
  9.         ModelAndView modelAndView = new ModelAndView("hello");
  10.         // 向模型中添加数据
  11.         modelAndView.addObject("message", "Hello, Spring MVC!");
  12.         return modelAndView;
  13.     }
  14. }
复制代码
在上述代码中:

对应的 hello.jsp 页面如下:
  1. <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
  2. <!DOCTYPE html>
  3. <html>
  4. <head>
  5.     <title>Hello Page</title>
  6. </head>
  7. <body>
  8.     <h1>${message}</h1>
  9. </body>
  10. </html>
复制代码
在 JSP 页面中,可以使用 EL 表达式 ${message} 访问模型中的数据。
示例 2:使用 ModelAndView 处理列表数据

以下示例展示了如何使用 ModelAndView 转达列表数据:
  1. import org.springframework.stereotype.Controller;
  2. import org.springframework.web.bind.annotation.GetMapping;
  3. import org.springframework.web.servlet.ModelAndView;
  4. import java.util.ArrayList;
  5. import java.util.List;
  6. @Controller
  7. public class UserController {
  8.     @GetMapping("/users")
  9.     public ModelAndView getUsers() {
  10.         // 模拟获取用户列表
  11.         List<String> users = new ArrayList<>();
  12.         users.add("Alice");
  13.         users.add("Bob");
  14.         users.add("Charlie");
  15.         // 创建 ModelAndView 对象,并指定视图名称
  16.         ModelAndView modelAndView = new ModelAndView("users");
  17.         // 向模型中添加用户列表数据
  18.         modelAndView.addObject("userList", users);
  19.         return modelAndView;
  20.     }
  21. }
复制代码
对应的 users.jsp 页面如下:
  1. <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
  2. <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
  3. <!DOCTYPE html>
  4. <html>
  5. <head>
  6.     <title>User List</title>
  7. </head>
  8. <body>
  9.     <h1>User List</h1>
  10.     <ul>
  11.         <c:forEach items="${userList}" var="user">
  12.             <li>${user}</li>
  13.         </c:forEach>
  14.     </ul>
  15. </body>
  16. </html>
复制代码
在上述代码中,控制器方法 getUsers 获取了一个用户列表,并将其添加到 ModelAndView 的模型中,视图名称为 users。在 users.jsp 页面中,使用 JSTL 的 <c:forEach> 标签遍历用户列表并展示。
示例 3:使用 ModelAndView 处理异常情况

  1. import org.springframework.stereotype.Controller;
  2. import org.springframework.web.bind.annotation.GetMapping;
  3. import org.springframework.web.servlet.ModelAndView;
  4. @Controller
  5. public class ErrorController {
  6.     @GetMapping("/errorTest")
  7.     public ModelAndView handleError() {
  8.         ModelAndView modelAndView = new ModelAndView();
  9.         try {
  10.             // 模拟抛出异常的操作
  11.             throw new RuntimeException("An error occurred!");
  12.         } catch (RuntimeException e) {
  13.             // 设置错误视图名称
  14.             modelAndView.setViewName("error");
  15.             // 向模型中添加错误信息
  16.             modelAndView.addObject("errorMessage", e.getMessage());
  17.         }
  18.         return modelAndView;
  19.     }
  20. }
复制代码
对应的 error.jsp 页面如下:
  1. <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
  2. <!DOCTYPE html>
  3. <html>
  4. <head>
  5.     <title>Error Page</title>
  6. </head>
  7. <body>
  8.     <h1>Error Occurred</h1>
  9.     <p>${errorMessage}</p>
  10. </body>
  11. </html>
复制代码
在这个示例中,控制器方法 handleError 模仿抛出一个异常,捕捉异常后,设置视图名称为 error,并将错误信息添加到模型中。在 error.jsp 页面中,展示错误信息。
通过以上示例可以看出,ModelAndView 是 Spring MVC 中一种方便的方式,用于在控制器和视图层之间转达数据和指定视图。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 IT评测·应用市场-qidao123.com (https://dis.qidao123.com/) Powered by Discuz! X3.4