SpringMVC的执行流程

文章目录

什么是SpringMVC

SpringMVC是Spring框架中的一个模块,专门用于开发Web应用程序。它是一个基于MVC 设计模式的Web框架。MVC模式把应用分成三个部分:Model 负责数据处理和业务逻辑,View 负责展示数据,Controller负责接收请求、调用业务逻辑、控制页面跳转。它支持灵活的配置方式,可以用XML配置也可以用注解配置。同时提供强大的数据绑定功能,能够自动将请求参数绑定到Controller方法参数上。另外还支持多种视图技术,比如JSP、Thymeleaf、FreeMarker等。

核心组件

SpringMVC包含几个核心组件:

  1. DispatcherServlet是前端控制器,整个流程的入口点。
  2. HandlerMapping是处理器映射器,负责URL与Controller的映射关系。
  3. HandlerAdapter是处理器适配器,负责调用具体的Controller方法。
  4. Handle(Controller)是我们编写的控制器,处理具体业务逻辑。
  5. ViewResolver是视图解析器,用来解析逻辑视图名。
  6. View是视图对象,负责最终的页面渲染。

执行流程详解

第一步:用户发起请求

用户通过浏览器发送HTTP请求到服务器,比如访问 http://localhost:8080/user/list

第二步:DispatcherServlet接收请求

前端控制器DispatcherServlet作为统一入口接收所有请求。它在web.xml中配置,拦截所有匹配的请求。

第三步:HandlerMapping查找Handler

DispatcherServlet调用HandlerMapping,根据请求URL查找对应的Controller和方法。HandlerMapping会扫描所有的@RequestMapping注解,建立URL和方法的映射关系。

java 复制代码
@Controller
@RequestMapping("/user")
public class UserController {
    @RequestMapping("/list")
    public String userList() {
        return "user/list";
    }
}

第四步:返回HandlerExecutionChain

HandlerMapping找到合适的Handler后,会返回一个HandlerExecutionChain对象。这个对象包含了目标Controller方法以及相关的拦截器链(如果实现了拦截器)。

第五步:HandlerAdapter处理请求

DispatcherServlet根据Handler类型找到对应的HandlerAdapter。HandlerAdapter负责调用Controller方法,包括参数解析、方法调用、返回值处理等工作。首先调用拦截器的preHandle方法,然后执行Controller方法,最后调用拦截器的postHandle方法。

第六步:Controller执行业务逻辑

Controller方法开始执行具体的业务逻辑:

java 复制代码
@RequestMapping("/list")
public String userList(Model model) {
    // 调用Service层处理业务
    List<User> users = userService.findAll();
    // 准备模型数据
    model.addAttribute("users", users);
    // 返回逻辑视图名
    return "user/list";
}

Controller接收请求参数,调用Service层处理业务逻辑,准备模型数据,最后返回逻辑视图名。

第七步:ViewResolver解析视图

ViewResolver根据Controller返回的逻辑视图名解析出具体的View对象。比如InternalResourceViewResolver会把"user/list "解析成"/WEB-INF/views/user/list.jsp"。

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

第八步:View渲染并返回响应

View对象将模型数据渲染到页面模板中,生成最终的HTML响应。渲染完成后,通过HttpServletResponse将HTML返回给客户端浏览器。

执行流程图

总结

SpringMVC的执行流程 就是这样一个完整的链条:
从用户发起请求开始,经过DispatcherServlet统一调度,通过HandlerMapping找到对应的Controller,用HandlerAdapter调用具体方法,Controller处理业务逻辑后返回视图名,ViewResolver解析视图,最终View渲染页面返回给用户。

整个过程体现了SpringMVC松耦合、职责分离的设计思想,每个组件都有明确的职责,协同工作完成Web请求的处理。

相关推荐
你三大爷3 天前
Spring实现proxy的流程
spring
金銀銅鐵5 天前
Spring 中的 initializeBean 方法的内部逻辑小总结
spring
麦兜*7 天前
MongoDB Atlas 云数据库实战:从零搭建全球多节点集群
java·数据库·spring boot·mongodb·spring·spring cloud
麦兜*7 天前
MongoDB 在物联网(IoT)中的应用:海量时序数据处理方案
java·数据库·spring boot·物联网·mongodb·spring
青衫客367 天前
Spring异步编程- 浅谈 Reactor 核心操作符
java·spring·响应式编程
Cyan_RA97 天前
SpringMVC @RequestMapping的使用演示和细节 详解
java·开发语言·后端·spring·mvc·ssm·springmvc
wuxuanok8 天前
SpringBoot -原理篇
java·spring boot·spring
若鱼19198 天前
spring-kafka消费异常处理
spring·kafka
送秋三十五8 天前
spring源码分析————ListableBeanFactory
java·后端·spring
一又四分之一.8 天前
spring、springboot、springCloud
spring boot·spring·spring cloud