Spring Boot MVC 超详细讲解!!!

发布于:2025-06-20 ⋅ 阅读:(20) ⋅ 点赞:(0)

Spring Boot MVC 是 Spring Boot 框架中的一个重要模块,用于构建基于 MVC(Model-View-Controller)架构模式的 Web 应用程序,以下是详细讲解:

一、简介

  • 是 Spring Boot 对传统 Spring MVC 的简化和增强。它继承了 Spring MVC 的强大功能,如请求映射、数据绑定、视图解析等,同时又利用 Spring Boot 的自动配置特性,大大减少了开发过程中的配置工作量。

二、核心组件

  1. 控制器(Controller)

    • 用于处理用户请求并返回响应。在 Spring Boot MVC 中,通常使用 @Controller 注解来标记一个控制器类,类中的方法使用 @RequestMapping 注解来映射特定的 HTTP 请求。

    • 示例代码

      @Controller
      public class HelloController {
          @RequestMapping("/hello")
          public String sayHello() {
              return "hello";
          }
      }

      这段代码定义了一个名为 HelloController 的控制器,当用户访问 “/hello” 路径时,会调用 sayHello 方法,该方法返回 “hello”,这通常会被解释为视图的名称,用来渲染对应的页面。

  2. 请求映射(RequestMapping)

    • 用于将特定的 HTTP 请求映射到控制器的方法上。它可以指定请求的 URL、HTTP 方法(如 GET、POST 等)、请求参数等条件。

    • 示例代码:

      @RequestMapping(value = "/user", method = RequestMethod.GET)
      public String getUser() {
          // 处理获取用户信息的逻辑
          return "user";
      }
      
      @RequestMapping(value = "/user", method = RequestMethod.POST)
      public String createUser() {
          // 处理创建用户信息的逻辑
          return "createUser";
      }

      这里定义了两个方法,分别处理对 “/user” 路径的 GET 和 POST 请求,不同的 HTTP 方法对应不同的业务逻辑。

  3. 模型(Model)

    • 用于存储要传递给视图的数据。可以使用 ModelModelMap 对象来添加属性,这些属性可以在视图中访问。

    • 示例代码:

      @Controller
      public class UserController {
          @RequestMapping("/user")
          public String getUser(Model model) {
              User user = new User();
              user.setName("张三");
              user.setAge(20);
              model.addAttribute("user", user);
              return "user";
          }
      }

      在这个例子中,创建了一个 User 对象,并将其添加到模型中,这样在 “user” 视图中就可以访问到这个 user 对象的属性。

  4. 视图(View)

    • 用于向用户展示页面。常见的视图技术包括 JSP、Thymeleaf、Freemarker 等。例如,在使用 Thymeleaf 作为视图时,会根据控制器返回的视图名称来解析对应的 HTML 模板文件。

    • 示例代码(Thymeleaf 视图):

      <!DOCTYPE html>
      <html xmlns:th="http://www.thymeleaf.org">
      <head>
          <title>User Information</title>
      </head>
      <body>
          <h1>User Name: <span th:text="${user.name}"></span></h1>
          <p>User Age: <span th:text="${user.age}"></span></p>
      </body>
      </html>

      这段 HTML 代码使用 Thymeleaf 的语法来获取模型中的 user 对象的属性并展示在页面上。

三、数据绑定

  • Spring Boot MVC 提供了自动数据绑定功能,可以将请求参数自动绑定到控制器方法的参数对象上。

  • 示例代码:

    @Controller
    public class UserController {
        @RequestMapping("/updateUser")
        public String updateUser(User user) {
            // user 对象的属性会自动绑定请求参数
            // 处理更新用户信息的逻辑
            return "result";
        }
    }

    假设有一个 User 类,包含 name、age 等属性。当用户提交一个表单请求到 “/updateUser” 路径时,表单中的参数名如果和 User 类的属性名匹配,就会自动绑定到 user 对象中,这样在控制器方法中就可以直接使用这个对象来获取请求参数的值。

四、异常处理

  • 可以使用 @ControllerAdvice@ExceptionHandler 注解来进行全局的异常处理。

  • 示例代码:

    @ControllerAdvice
    public class GlobalExceptionHandler {
        @ExceptionHandler(value = IllegalArgumentException.class)
        public String handleIllegalArgumentException(IllegalArgumentException e) {
            return "error/illegalArgumentException";
        }
    
        @ExceptionHandler(value = Exception.class)
        public String handleException(Exception e) {
            return "error/generalError";
        }
    }

    这个例子定义了一个全局异常处理器,当出现 IllegalArgumentException 时,会返回 “error/illegalArgumentException” 视图;当出现其他异常时,会返回 “error/generalError” 视图。

五、与其他组件的交互

  • Spring Boot MVC 可以很方便地与其他 Spring Boot 组件(如数据访问组件、安全组件等)集成。例如,可以结合 Spring Data JPA 来进行数据库操作,结合 Spring Security 来进行安全认证和授权。

通过以上这些功能和组件,Spring Boot MVC 能够帮助开发者快速、高效地开发出功能完善的 Web 应用程序。


网站公告

今日签到

点亮在社区的每一天
去签到