SpringMVC-组件解析
- 开源代码
- 2025-08-04 15:15:02

一、引子
我们在上一篇文章Spring MVC-基本概念中,为读者解释了如何使用SpringMVC框架,将承接客户端请求的工作从原生的Servlet转移到我们熟知的Controller中。那么我们不禁会好奇,SpringMVC框架到底做了什么,是怎么把请求分发给Controller的呢?请读者继续阅读。
二、请求流程SpringMVC的各个组件及执行流程如下图所示:
SpringMVC的请求流程主要包括以下步骤:
客户端发送请求被前端控制器DispatcherServlet接收;前端控制器DispatcherServlet调用处理器映射器HandlerMapping查询处理器;处理器映射器找到具体的处理器(可根据xml配置、注解进行查找),生成处理器对象及处理器拦截器,返回处理器执行链HandlerExecutionChain;前端控制器调用处理器适配器HandlerAdapter执行处理器;处理器适配器经过适配调用映射到的处理器Handler(即Controller,也叫后端控制器);处理器执行完成后返回ModelAndView对象;处理器适配器将ModelAndView返回给前端适配器;前端控制器将ModelAndView传给视图解析器ViewResolver;ViewResolver解析后返回具体的View;前端控制器根据View进行渲染视图(同时会把Model中数据填充到视图中),响应给客户端。 三、快速演示例如,我们可以在spring-mvc.xml配置文件中声明视图解析器,设置视图的前缀与后缀:
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd"> <!--扫描控制层组件--> <context:component-scan base-package="com.bylearning.controller"/> <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/jsp/" /> <property name="suffix" value=".jsp" /> </bean> </beans>于是我们在Controller的代码便可改写成:
import com.bylearning.service.UserService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; @Controller public class HelloController { @Autowired private UserService userService; @RequestMapping(value = "/") public String protal() { // 将逻辑视图返回 return "index"; } @RequestMapping(value = "/hello") public String hello() { System.out.println(userService); return "success"; } }当然,此时的目录结构是:
这里我们先不去过多演示关于SpringMVC组件的自定义使用方法,重点是了解请求的执行流程,以及由@WebServlet注解演变到@Controller的过程中发生了什么,这样才能更加深刻的了解框架与技术的更迭。
此外,关于组件的另一个示例使用,我们恰巧需要在SpringMVC-响应这一篇中介绍处理器适配器中配置消息转换器,请感兴趣的读者继续阅读。
SpringMVC-组件解析由讯客互联开源代码栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“SpringMVC-组件解析”