全部学科
Python全栈
python
NodeJS全栈
nodejs
📝 1 篇文章 22 道配套习题

MVC核心源码执行流程专题

专题说明

本专题深入分析SpringMVC核心源码,解析DispatcherServlet请求处理流程、九大组件初始化与工作机制。

学习目标

  1. 理解DispatcherServlet源码结构
  2. 掌握九大组件初始化流程
  3. 分析请求处理完整链路
  4. 理解HandlerMapping与HandlerAdapter工作机制

学习内容

  • DispatcherServlet源码分析
  • 九大组件初始化机制
  • HandlerMapping源码
  • HandlerAdapter源码
  • ViewResolver源码

学习建议

结合源码调试理解SpringMVC底层原理,重点关注核心组件的交互流程。

📝 配套习题(22 题)

💡 参考答案在文末
判断题
1

如果拦截器A的preHandle返回false,则拦截器A的afterCompletion方法仍然会被执行。

A

B

2

HandlerMapping的getHandler方法返回的HandlerExecutionChain对象中包含了拦截器列表。

A

B

单选题
3

DispatcherServlet初始化策略组件的入口方法是哪个?

A

init()

B

onRefresh()

C

afterPropertiesSet()

D

service()

4

SpringMVC中,处理Controller方法返回值的组件是什么?

A

HandlerMethodArgumentResolver

B

HandlerMethodReturnValueHandler

C

ViewResolver

D

HandlerAdapter

5

SpringMVC中HandlerAdapter的主要作用是什么?

A

将请求URL映射到对应的Controller方法

B

调用具体的Handler方法并处理返回值

C

将请求参数绑定到方法参数

D

处理Controller抛出的异常

6

在SpringMVC中,HandlerMapping的主要职责是什么?

A

执行Controller方法并返回ModelAndView

B

根据请求URL映射到对应的Handler(Controller方法)

C

解析视图并渲染响应结果

D

处理异常并返回错误页面

7

SpringMVC中,将请求参数绑定到方法参数的组件是什么?

A

HandlerMapping

B

HandlerMethodArgumentResolver

C

HandlerMethodReturnValueHandler

D

ViewResolver

8

当配置了多个拦截器时,它们的preHandle方法的执行顺序是怎样的?

A

按配置顺序正序执行

B

按配置顺序倒序执行

C

随机执行

D

按拦截器类名字母顺序执行

9

SpringMVC中,DispatcherServlet处理异常时默认使用哪个组件?

A

HandlerExceptionResolver

B

ViewResolver

C

HandlerAdapter

D

LocaleResolver

多选题
10

以下哪些是SpringMVC内置的HandlerAdapter实现?

A

RequestMappingHandlerAdapter

B

HttpRequestHandlerAdapter

C

SimpleControllerHandlerAdapter

D

SimpleServletHandlerAdapter

11

关于拦截器的三个方法preHandle、postHandle、afterCompletion的执行顺序,以下说法正确的是?

A

preHandle按配置顺序正序执行

B

postHandle按配置顺序倒序执行

C

afterCompletion按配置顺序倒序执行

D

afterCompletion只有在请求成功完成时才执行

12

以下哪些是SpringMVC内置的异常处理方式?

A

@ExceptionHandler注解

B

@ControllerAdvice注解

C

实现HandlerExceptionResolver接口

D

@ResponseStatus注解

13

以下哪些是SpringMVC内置的HandlerMethodArgumentResolver实现?

A

RequestParamMethodArgumentResolver

B

PathVariableMethodArgumentResolver

C

RequestResponseBodyMethodProcessor

D

SessionAttributeMethodArgumentResolver

14

RequestMappingHandlerMapping在启动时会扫描所有带有@Controller注解的类,并解析其中的@RequestMapping方法。以下关于其内部实现的说法正确的是?

A

使用MappingRegistry存储所有URL映射关系

B

通过实现HandlerMethodArgumentResolver来解析方法参数

C

扫描过程在afterPropertiesSet回调中触发

D

每个映射方法都会生成一个HandlerMethod对象

15

以下哪些是SpringMVC内置的HandlerMethodReturnValueHandler实现?

A

ModelAndViewMethodReturnValueHandler

B

ViewNameMethodReturnValueHandler

C

RequestResponseBodyMethodProcessor

D

HttpEntityMethodProcessor

16

以下哪些是SpringMVC内置的HandlerMapping实现?

A

RequestMappingHandlerMapping

B

BeanNameUrlHandlerMapping

C

SimpleUrlHandlerMapping

D

ControllerHandlerMapping

17

DispatcherServlet在initStrategies()方法中初始化了哪些策略组件?

A

MultipartResolver

B

LocaleResolver

C

ThemeResolver

D

HandlerMapping

填空题
18

在SpringMVC异常处理流程中,DispatcherServlet会遍历所有注册的____________,调用其____________方法尝试解析异常,如果返回____________对象则表示异常已被处理。

19

RequestMappingHandlerAdapter在执行Handler方法时,使用____________类来封装方法调用,并通过____________解析方法参数,通过____________处理方法返回值。

20

SpringMVC中,使用________________________注解触发参数校验时,需要配置____________作为校验器,校验失败会将错误信息封装到BindingResult对象中。

21

当Controller方法标注____________时,返回值会由____________进行序列化转换,SpringMVC默认使用____________作为JSON转换器,具体实现类为MappingJackson2HttpMessageConverter。

22

DispatcherServlet初始化时,如果没有显式配置某个策略组件,会从____________文件中读取默认实现类,该文件位于____________包下。如果需要自定义组件,可以通过实现____________接口进行配置。

参考答案
1.错误 2.正确 3.B 4.B 5.B 6.B 7.B 8.A 9.A 10.A;B;C;D 11.A;B;C 12.A;B;C;D 13.A;B;C;D 14.A;C;D 15.A;B;C;D 16.A;B;C 17.A;B;C;D 18.HandlerExceptionResolver;resolveException;ModelAndView 19.InvocableHandlerMethod;HandlerMethodArgumentResolver;HandlerMethodReturnValueHandler 20.@Validated;@Valid;LocalValidatorFactoryBean 21.@ResponseBody;HttpMessageConverter;Jackson 22.dispatcherServlet.properties;org.springframework.web.servlet;WebMvcConfigurer
想在手机上练习这套专题?
使用微信卷王开发者小程序,打开首页顶部扫码功能识别二维码
← 上一个专题 MVC核心思想与执行流程专题
下一个专题 → 全局异常统一处理专题
扫码体验小程序
加载中
想在手机上刷题学习?
使用微信卷王开发者小程序,打开首页顶部扫码功能识别二维码