Spring MVC 教程

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

Spring MVC 核心原理

Spring MVC 是基于 Servlet API 构建的 Web 框架,采用前端控制器模式(Front Controller Pattern),核心组件是 DispatcherServlet,负责协调各组件处理请求。

请求处理流程

  1. DispatcherServlet 接收请求
    用户请求首先到达 DispatcherServlet(核心控制器),它是整个流程的入口点,负责请求的分发和响应处理。

  2. HandlerMapping 解析请求
    HandlerMapping 根据请求的 URL 路径,找到对应的处理器(Controller 中的方法),并生成一个处理器执行链(HandlerExecutionChain),可能包含拦截器(Interceptor)。

  3. HandlerAdapter 执行处理器
    HandlerAdapter 负责调用具体的处理器方法(如 @RequestMapping 注解的方法),处理请求参数绑定、方法调用等逻辑。

  4. Controller 处理业务逻辑
    控制器方法执行业务逻辑,返回一个 ModelAndView 对象(包含模型数据和视图名称)或直接返回数据(如 @ResponseBody 注解的方法)。

  5. ViewResolver 解析视图
    如果返回的是视图名称,ViewResolver 将视图名称解析为具体的视图对象(如 JSP、Thymeleaf 模板等)。

  6. View 渲染响应
    视图对象根据模型数据渲染最终的响应内容(HTML、JSON 等),并通过 DispatcherServlet 返回给客户端。

关键组件说明

  • DispatcherServlet
    前端控制器,统一处理所有请求,协调其他组件工作。

  • HandlerMapping
    映射请求到处理器,支持注解(如 @RequestMapping)和配置文件方式。

  • HandlerAdapter
    适配不同处理器(如 Controller 接口、注解方式等),调用处理器方法。

  • ViewResolver
    视图解析器,将逻辑视图名解析为实际视图(如 /WEB-INF/views/home.jsp)。

  • HandlerInterceptor
    拦截器,可以在请求处理前后执行自定义逻辑(如权限检查、日志记录)。

注解驱动开发

Spring MVC 支持基于注解的配置,简化开发:

  • @Controller:标记类为控制器。
  • @RequestMapping:映射请求路径到方法。
  • @RequestParam:绑定请求参数到方法参数。
  • @ResponseBody:直接返回数据(如 JSON/XML)。
  • @RestController:组合 @Controller@ResponseBody

示例代码片段

@Controller
@RequestMapping("/user")
public class UserController {
    @GetMapping("/info")
    public String getUserInfo(Model model) {
        model.addAttribute("name", "Spring MVC");
        return "userInfo"; // 视图名称
    }

    @PostMapping("/save")
    @ResponseBody
    public ResponseEntity<String> saveUser(@RequestBody User user) {
        // 处理业务逻辑
        return ResponseEntity.ok("Success");
    }
}

扩展机制

  • 数据绑定与验证
    支持通过 @InitBinder 自定义数据绑定,结合 @Valid 实现参数校验。

  • 异常处理
    通过 @ControllerAdvice@ExceptionHandler 全局处理异常。

  • 静态资源处理
    通过 <mvc:resources>WebMvcConfigurer 配置静态资源路径。

Spring MVC 的设计强调模块化和灵活性,开发者可以通过配置或扩展组件适应不同需求。


网站公告

今日签到

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