1.springmvc介绍
spring mvc 是 spring framework 的一个核心模块,是一个基于 mvc 设计模式 的优秀 web 框架。它本质上是 spring 框架在 web 应用领域的延伸,旨在简化基于 mvc 架构的 web 应用程序开发。mvc全名是model view controller,是模型(model)-视图(view)-控制器(controller)的缩写。
- 模型(model)代表应用程序的核心数据和业务规则。它专注于处理什么数据和数据如何变化。
- 视图(view):负责与用户直接交互的界面部分。它专注于如何展示数据和接收用户输入。
- 控制器(controller):作为视图和模型之间的协调者。它接收用户的输入,决定使用哪个模型来处理,以及选择哪个视图来展示结果。

我们经常在项目中构建的基础三层架构(controller,service,mapper)就是在它们的基础之上所诞生的。
2.springmvc关键组件
1.dispatcherservlet(前端控制器)
前端控制器是一种设计模式,它提供了一个统一的入口点来处理所有的 web 请求。在传统 servlet 开发中,每个 url 可能需要一个单独的 servlet,而前端控制器模式用一个 servlet 处理所有请求,然后分发到不同的处理器。spring mvc 中就是 dispatcherservlet 这个具体的实现。
职责:
- 接收所有 http 请求
- 协调其他组件完成请求处理
- 返回最终响应给客户端
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 和具体处理器之间建立桥梁。
职责:
- 根据请求的 url 路径,找到对应的处理器(handler)
- 维护请求路径与处理器的映射关系
常用实现:
- requestmappinghandlermapping:处理 @requestmapping注解(最常用)
- beannameurlhandlermapping:根据 bean 名称映射
- simpleurlhandlermapping:通过配置文件映射
大概说一下它的一个工作方式,我们假设有一个get /users/list请求,handlermapping 查找映射表:"/users/list"就会转化成usercontroller.listusers()给前端控制器。
3.handleradapter(处理器适配器)
handleradapter 是一个适配器接口,它让 dispatcherservlet 能够以统一的方式调用各种不同类型的处理器(handler),而不需要关心处理器的具体实现。
职责:
- 适配不同类型的处理器(controller)
- 统一调用处理器方法
- 处理请求参数绑定和返回值处理
常用实现:
- requestmappinghandleradapter:处理 @controller和 @requestmapping
- simplecontrollerhandleradapter:处理 controller接口实现
- httprequesthandleradapter:处理 httprequesthandler实现
handleradapter会进行参数封装、数据格式转换、数据校验等操作
4.handler处理器(controller)
handler处理器是 spring mvc 的业务逻辑执行核心,是实际处理 http 请求并返回响应的组件。
职责:
- 执行具体的业务逻辑
- 调用 service 层处理业务
- 准备模型数据
- 返回视图信息
最常见的就是我们平时写的注解形式
@controller
public class usercontroller {
@getmapping("/users")
public string listusers(model model) {
model.addattribute("users", userservice.findall());
return "userlist";
}
}5.viewresolver(视图解析器)
viewresolver 是一个策略接口,用于解析控制器返回的视图名称,并返回一个用于渲染的 view 对象。它是 mvc 架构中视图层的重要桥梁。
职责:
- 将 controller 返回的逻辑视图名解析为实际的 view 对象
- 支持多种视图技术(jsp、thymeleaf、freemarker等)
常用实现:
- internalresourceviewresolver:用于 jsp(最常用)
- thymeleafviewresolver:用于 thymeleaf
- freemarkerviewresolver:用于 freemarker
- beannameviewresolver:根据 bean 名称解析
一个基础的视图解析器配置类如下:
@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等)。它是用户界面的最终呈现者。
职责:
- 将模型数据渲染成最终响应(通常是 html)
- 支持不同的视图技术
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.常用强大注解:
- @controller:标记一个类为控制器。
- @requestmapping:将 url 映射到处理方法。
- @requestparam, @pathvariable:绑定请求参数和路径变量。
- @requestbody, @responsebody:支持 restful 风格的 json/xml 数据绑定。
4.灵活的视图技术:支持 jsp、thymeleaf、freemarker、velocity、pdf、excel 等多种视图技术。
5.拦截器:提供 handlerinterceptor接口,允许在请求处理前后执行通用逻辑(如权限检查、日志记录),功能类似于过滤器但更精细。
以上就是spring mvc处理流程与机制解析的详细内容,更多关于spring mvc处理流程的资料请关注代码网其它相关文章!
发表评论