java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > Spring MVC处理流程

Spring MVC处理流程与机制解析

作者:晔子yy

这篇文章主要介绍了Spring MVC处理流程与机制,Spring MVC是Spring Framework的一个核心模块,是一个基于MVC设计模式的优秀Web框架,它本质上是Spring框架在Web应用领域的延伸,需要的朋友可以参考下

1.SpringMVC介绍

Spring MVC 是 Spring Framework 的一个核心模块,是一个基于 MVC 设计模式​ 的优秀 Web 框架。它本质上是 Spring 框架在 Web 应用领域的延伸,旨在简化基于 MVC 架构的 Web 应用程序开发。MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写。

我们经常在项目中构建的基础三层架构(controller,service,mapper)就是在它们的基础之上所诞生的。

2.SpringMVC关键组件

1.DispatcherServlet(前端控制器)

前端控制器是一种设计模式,它提供了一个统一的入口点来处理所有的 Web 请求。在传统 Servlet 开发中,每个 URL 可能需要一个单独的 Servlet,而前端控制器模式用一个 Servlet 处理所有请求,然后分发到不同的处理器。Spring MVC 中就是 DispatcherServlet这个具体的实现。

职责:

DispatcherServlet可以说是整个SpringMVC的核心所在,它承担着从用户请求到用户接收的一整块处理链条的责任。

配置演示:

<!-- web.xml 配置 -->
<servlet>
    <servlet-name>dispatcher</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>dispatcher</servlet-name>
    <url-pattern>/</url-pattern> <!-- 拦截所有请求 -->
</servlet-mapping>

2.HandlerMapping(处理器映射器)

HandlerMapping 是一个策略接口,定义了如何根据 HTTP 请求找到对应的处理器(Handler)。它在 DispatcherServlet 和具体处理器之间建立桥梁。

职责:

常用实现:

大概说一下它的一个工作方式,我们假设有一个GET /users/list请求,HandlerMapping 查找映射表:"/users/list"就会转化成UserController.listUsers()给前端控制器。

3.HandlerAdapter(处理器适配器)

HandlerAdapter 是一个适配器接口,它让 DispatcherServlet 能够以统一的方式调用各种不同类型的处理器(Handler),而不需要关心处理器的具体实现。

职责:

常用实现:

HandlerAdapter会进行参数封装、数据格式转换、数据校验等操作

4.Handler处理器(Controller)

Handler处理器是 Spring MVC 的业务逻辑执行核心,是实际处理 HTTP 请求并返回响应的组件。

职责:

最常见的就是我们平时写的注解形式

@Controller
public class UserController {
    @GetMapping("/users")
    public String listUsers(Model model) {
        model.addAttribute("users", userService.findAll());
        return "userList";
    }
}

5.ViewResolver(视图解析器)

ViewResolver 是一个策略接口,用于解析控制器返回的视图名称,并返回一个用于渲染的 View 对象。它是 MVC 架构中视图层的重要桥梁。

职责:

常用实现:

一个基础的视图解析器配置类如下:

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

简单说一下流程:

1.Handler处理器返回: "user/list"

2.InternalResourceViewResolver 解析:

    前缀: "/WEB-INF/views/"

    视图名: "user/list"

    后缀: ".jsp"

实际路径: "/WEB-INF/views/user/list.jsp"

3.最后创建 InternalResourceView 对象返回

6.View(视图)

View 是一个渲染接口,负责将模型数据渲染成最终的响应格式(HTML、JSON、XML、PDF、Excel等)。它是用户界面的最终呈现者。

职责:

3.SpringMVC处理流程

说完SpringMVC的一些关键组件,我们来看看这些组件到底是如何相互配合,完成从请求到接收数据的过程。

1.用户发送请求至前端控制器 DispatcherServlet​

2.DispatcherServlet 收到请求调用处理器映射器 HandlerMapping​

3.处理器映射器根据请求 URL 找到具体的处理器,生成处理器执行链 HandlerExecutionChain(包括处理器对象和处理器拦截器)一并返回给 DispatcherServlet​

4.DispatcherServlet 根据处理器 Handler 获取处理器适配器 HandlerAdapter 执行 HandlerAdapter 处理一系列的操作,如:参数封装、数据格式转换、数据验证等操作​

5.执行处理器 Handler(Controller,也叫页面控制器)​

6.Handler 执行完成返回 ModelAndView​

7.HandlerAdapter 将 Handler 执行结果 ModelAndView 返回到 DispatcherServlet​

8.DispatcherServlet 将 ModelAndView 传给 ViewResolver 视图解析器​

9.ViewResolver 解析后返回具体 View​

10.DispatcherServlet 对 View 进行渲染视图(即将模型数据 model 填充至视图中)​

11.DispatcherServlet 响应用户

4.SpringMVC的主要优势

1.与 Spring 无缝集成:可以充分利用 Spring 的 IOC(控制反转)和 AOP(面向切面编程)特性,方便地进行依赖注入和事务管理。

2.高度可配置:几乎所有组件都可以通过配置文件(XML)或注解进行定制和扩展

3.常用强大注解:

4.灵活的视图技术:支持 JSP、Thymeleaf、FreeMarker、Velocity、PDF、Excel 等多种视图技术。

5.拦截器:提供 HandlerInterceptor接口,允许在请求处理前后执行通用逻辑(如权限检查、日志记录),功能类似于过滤器但更精细。

以上就是Spring MVC处理流程与机制解析的详细内容,更多关于Spring MVC处理流程的资料请关注脚本之家其它相关文章!

您可能感兴趣的文章:
阅读全文