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

相关推荐
阿杰AJie7 小时前
Spring常用注解总结(持续更新)
spring
孤狼程序员10 小时前
【Spring Cloud微服务】7.拆解分布式事务与CAP理论:从理论到实践,打造数据一致性堡垒
spring·spring cloud·微服务
趙卋傑10 小时前
Spring原理
java·后端·spring
新鲜萝卜皮12 小时前
Spring如何解决循环依赖
spring
Jacobshash13 小时前
SpringCloud框架组件梳理
后端·spring·spring cloud
孤狼程序员13 小时前
深入探讨Java异常处理:受检异常与非受检异常的最佳实践
java·后端·spring
3Cloudream1 天前
互联网大厂Java面试:从基础到微服务的深度解析
java·spring·微服务·面试·技术解析·电商场景
C++chaofan1 天前
Spring Task快速上手
java·jvm·数据库·spring boot·后端·spring·mybatis
yinke小琪1 天前
Spring生态全家桶:从基础到微服务的演进与关联是什么?
java·后端·spring