springmvc 工作原理

时间:2024-11-08 10:43:26

Spring MVC 是基于 Java 的一种轻量级的 Web 框架,采用 MVC(Model-View-Controller)设计模式。它的工作原理大致分为以下几个步骤,核心是通过一系列的组件实现请求的分发、数据的处理与视图的渲染。

Spring MVC 工作流程

  1. 客户端发送请求:用户通过浏览器发送 HTTP 请求到服务器,Spring 的 DispatcherServlet 会接收到该请求。

  2. DispatcherServlet 分发请求DispatcherServlet 是 Spring MVC 的核心前端控制器,所有的请求都会由它来分发。它会根据请求路径去寻找合适的处理器(即 Controller)。

  3. HandlerMapping 处理映射DispatcherServlet 调用 HandlerMapping 查找对应的 Controller,根据 URL 地址映射到具体的处理器方法。

  4. Controller 处理请求:找到的 Controller 会接收请求,并处理业务逻辑。通常会调用 Service 层进行数据处理和业务逻辑运算,并将处理结果封装为 Model 数据对象。

  5. 返回 ModelAndView:处理完请求后,Controller 将数据返回给 DispatcherServlet。这时返回的是一个包含数据和视图信息的 ModelAndView 对象。

  6. ViewResolver 视图解析DispatcherServlet 调用 ViewResolver 对视图名称进行解析,找到对应的视图模板(例如 JSP、Thymeleaf 等)。

  7. 视图渲染:视图模板引擎将 Model 数据填充到视图模板中,生成最终的 HTML 页面。

  8. 返回响应DispatcherServlet 将渲染好的 HTML 页面响应给客户端,浏览器接收到 HTML 并进行渲染展示。


组件详细介绍

  1. DispatcherServlet:Spring MVC 的核心控制器,负责接收和分发请求,协调各组件完成请求的处理工作。
  2. HandlerMapping:用于根据 URL 请求路径找到对应的处理器,即 Controller
  3. Controller:业务逻辑处理器,处理请求,并将数据封装成 ModelAndView 返回。
  4. ViewResolver:视图解析器,负责将逻辑视图名转换为具体的物理视图。
  5. ModelAndView:包含处理数据(Model)和视图名称(View)的对象,用于将数据传递给视图。
  6. View:最终用于呈现给用户的视图,通过模板引擎渲染数据。

Spring MVC 示例代码

// Controller 示例
@Controller
public class UserController {

    @GetMapping("/user/{id}")
    public ModelAndView getUser(@PathVariable("id") Long id) {
        User user = userService.getUserById(id);
        ModelAndView modelAndView = new ModelAndView("userView");
        modelAndView.addObject("user", user);
        return modelAndView;
    }
}
  • 配置 ViewResolver(视图解析器):
@Configuration
public class WebConfig implements WebMvcConfigurer {

    @Bean
    public InternalResourceViewResolver viewResolver() {
        InternalResourceViewResolver resolver = new InternalResourceViewResolver();
        resolver.setPrefix("/WEB-INF/views/");
        resolver.setSuffix(".jsp");
        return resolver;
    }
}

总结

Spring MVC 的核心流程基于 DispatcherServlet 分发请求,通过 HandlerMapping 寻找合适的 Controller,再经由 ViewResolver 渲染视图,将最终页面返回给客户端。这种流程清晰、可扩展性高,使得 Spring MVC 成为构建 Web 应用的高效框架。