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请求的处理。

相关推荐
Diligently_15 小时前
Anolis 系统更新与密码设置&磁盘扩容
java·后端·spring
霸道流氓气质17 小时前
Spring 事务同步机制 —— AfterTransactionActionCollector 的异步解耦原理
java·后端·spring
星空19 小时前
Springboot复习
java·spring boot·spring
树码小子21 小时前
什么是大语言模型
人工智能·语言模型·mvc
聊浮游1 天前
JAVA2026最新全套学习资料、学习路线
java·开发语言·jvm·mysql·spring·maven·idea
未秃头的程序猿1 天前
读Spring AI源码的方法——不是硬啃,是带着问题去翻
java·后端·spring
evans在进步1 天前
Spring MVC 核心机制详解:全局异常处理、请求跳转与数据绑定
java·spring·mvc
趴下吧1 天前
spring boot启动流程总结
java·spring boot·spring
Tirzano1 天前
springoauth2server配置
java·spring boot·spring
JacksonMx1 天前
ContentCachingRequestWrapper 实战:解决请求体“只能读一次”的官方方案
java·spring boot·spring