Spring MVC 详细介绍

48 阅读2分钟

Spring MVC 详细介绍

Spring MVC 是一种基于 Spring 框架实现的轻量级 Web 框架,采用了 MVC(Model-View-Controller)设计模式。它通过将 Web 层进行职责解耦,简化了日常开发,并提供了强大的功能,如文件上传、数据转换等12

Spring MVC 的核心组件

  1. DispatcherServlet:前端控制器,接收所有请求并将其分发给相应的处理器。
  2. Handler Mapping:请求处理映射器,用于找到具体的处理器。
  3. Handler Adapter:处理适配器,调用具体的处理器。
  4. View Resolver:视图解析器,负责将逻辑视图名解析为具体的视图。
  5. Controller:控制器,处理具体的请求逻辑13

常用注解

  • @Controller:标记一个类为控制器。
  • @RequestMapping:映射请求路径到具体的方法。
  • @RequestParam:绑定请求参数到方法参数。
  • @PathVariable:将 URL 中的模板变量映射到方法参数。
  • @ResponseBody:将方法返回值直接写入 HTTP 响应体。
  • @ModelAttribute:在调用控制器方法前执行,用于预处理数据。
  • @SessionAttributes:将值存储到 session 作用域中12

工作流程

  1. 客户端发送请求到 DispatcherServlet。
  2. DispatcherServlet 通过 Handler Mapping 找到对应的处理器。
  3. 处理器通过 Handler Adapter 被调用,返回 ModelAndView 对象。
  4. DispatcherServlet 将 ModelAndView 传递给 View Resolver。
  5. View Resolver 解析视图并返回给客户端13

与 Struts2 的区别

  • 核心组件:Struts2 基于 Filter,而 Spring MVC 基于 Servlet。
  • 开发模式:Struts2 基于类开发,Spring MVC 基于方法开发。
  • 数据存储:Struts2 使用值栈存储数据,Spring MVC 使用请求参数绑定12

示例代码

以下是一个简单的 Spring MVC 控制器示例:

@Controller

public class TestController {

@RequestMapping(value="/user/{userId}/roles/{roleId}", method=RequestMethod.GET)

public String getLogin(@PathVariable("userId") String userId, @PathVariable("roleId") String roleId) {

System.out.println("User Id: " + userId);

System.out.println("Role Id: " + roleId);

return "hello";

}

}

重要性

Spring MVC 是大多数 Java 项目的基础,尤其是在 Spring 和 Spring Boot 项目中。它提供了灵活性、可配置性和可扩展性,帮助开发者构建高性能的 Web 应用程序23