大厂面试题-请简述你对Spring MVC的理解

目录

1、MultipartResolver文件处理器

2、LocaleResolver当前环境处理器

3、ThemeResolver主题处理器

4、HandlerMapping处理器映射器

5、HandlerAdapter处理器适配器

6、HandlerExceptionResolver异常处理器

7、RequestToViewNameTranslator视图名称翻译器

8、ViewResolvers页面渲染处理器

9、FlashMapManager参数传递管理器


Spring MVC是一种基于Java语言开发实现了Web MVC设计模式,请求驱动类型的轻量级Web框架。

采用了MVC架构模式的思想,通过把Model,View,Controller分离,将Web层进职责解耦,从而把复杂的Web应用分成逻辑清晰的几个组件,在Spring MVC中有9大重要的组件

下面详细说明一下这些组件的作用和初始化方法:

1、MultipartResolver文件处理

对应的初始化方法是initMultipartResolver(context),用于处理上传请求。

2、LocaleResolver当前环境处理器

其对应的初始化方法是initLocaleResolver(context)

SpringMVC主要有两个地方用到了Locale:

一是ViewResolver视图解析的时候;

二是用到国际化资源或者主题的时候。

3ThemeResolver主题处理器

其对应的初始化方法是initThemeResolver(context),用于解析主题。也就是解析样式、图片及它们所形成的显示效果的集合。

4、HandlerMapping处理器映射器

其对应的初始化方法是initHandlerMappings(context),在Spring MVC中会有很多请求,每个请求都需要一个Handler处理。

HandlerMapping的作用便是找到请求相应的处理器Handler和Interceptor。

5HandlerAdapter处理器适配器

其对应的初始化方法是initHandlerAdapters(context)

从名字上,它就是一个适配器。HandlerAdapters要做的事情就是如何让固定的Servlet处理方法调用灵活的Handler来进行处理

6HandlerExceptionResolver异常处理器

对应的初始化方法是initHandlerExceptionResolvers(context)它的主要作用是处理其他组件产生的异常情况。

7RequestToViewNameTranslator视图名称翻译器

其对应的初始化方法是initRequestToViewNameTranslator(context)它的作用是从请求中获取ViewName。

有的Handler处理完后并没设置View也没有设置ViewName,这时就需要从request中获取,而RequestToViewNameTranslator就是为request提供获取ViewName的实现。

8ViewResolvers页面渲染处理器

其对应的初始化方法是initViewResolvers(context)ViewResolvers的主要作用是将String类型的视图名和Locale解析为View类型的视图。

9、FlashMapManager参数传递管理器

其对应的初始化方法是initFlashMapManager(context)在实际应用中,为了避免重复提交,我们可以在处理完post请求后重定向到另外一个get请求,这个get请求可以用来返回页面渲染需要的信息。

FlashMap就是用于这种请求重定向场景中的参数传递。

Spring MVC九大组件中,涉及到请求处理响应的核心组件分别是:

1.   HandlerMapping

2.   HandlerAdapter

3.   ViewResolver

这张图表示这三个组件的整体执行流程 ,具体调用分为以下几个步骤:

1、HandlerMapping回到调用HandlerAdapter

2、HandlerAdapter返回ModelAndView

3、ModelAndView根据用户传入参数得到ViewResolvers

4、ViewResolvers会将用户传入的参数封装为View,交给引擎进行渲染。

注意:有大家最熟悉的两个类:ModelAndView和View类并不属于Spring MVC九大组件之列。

  • 8
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值