当前位置: 首页 > news >正文

Spring MVC的主要组件 -- java面试

Handler: 也就是处理器。它直接对应着MVC的C也就是Controller,它的具体表现形式有很多,可以是类,也可以是方法。在Controller层中@RequestMapping标注的所有方法都可以看成是一个Handler,只要可以实际处理请求的就可以是Handler。

  1. HandlerMapping
    initHandlerMappings(context),处理器映射器,根据用户请求的资源uri来查找Handler。在SpringMVC中会有很多请求,每个请求都需要一个Handler处理,接收到请求后具体要使用哪个Handler处理,这就是HandlerMapping需要做的事。

  2. HandlerAdapter
    initHandlerAdapters(context),处理器适配器。因为SpringMVC中的Handler可以是任意的形式,只要能处理请求就可以,但是Servlet需要的处理方法的结构是固定的,都是以request和response为参数的方法。如何让固定的Servlet处理方法调用灵活的Handler来进行处理,这就是HandlerAdapter要做的事。

Handler是用来干活的工具,HandlerMapping是根据需要干的活找到响应的工具,HandlerAdapter是使用工具干活的人。

  1. HandlerExceptionResolver
    initHandlerExceptionResolvers(context)。 根据异常设置ModelAndView,之后再交给render方法渲染。

  2. ViewResolver
    initViewResolvers(context),ViewResolver用来将String类型的视图名和Locale解析为View类型的视图。

  3. RequestToViewNameTranslator
    nitRequestToViewNameTranslator(context),ViewResolver是根据ViewName查找View,但有的Handler处理完成后并没有设置View也没有设置ViewName,这时需要从request获取ViewName了,如何从request获取ViewName就是RequestToViewNameTranslator要做的事。

  4. LocaleResolver
    initLocaleResolver(context),解析视图需要两个参数,一是视图名,另一个Locale。LocaleResolver用于从request解析出Locale,Locale就是zh-cn之类,表示一个区域,有了这个就可以对不同区域的用户显示不同的结果。

  5. ThemeResolver
    initThemeResolver(context),用于解析主题。

  6. MultipartResolver
    initMultipartResolver(context),用于处理上传请求。

  7. FlashMapManagerr
    initFlashMapManager(context),用来管理FlashMap的,FlashMap主要用在redirect中传递参数。

相关文章:

  • javaConfig是什么
  • Spring Boot自动配置原理 -- java面试
  • 如何理解 Spring Boot 中的 Starter -- java面试
  • 什么是嵌入式服务器?为什么要使用嵌入式服务器? -- java面试
  • mybatis的介绍以及优缺点 -- java面试
  • MyBatis 与Hibernate 有哪些不同 -- java面试
  • #{}和${}的区别是什么 -- java面试
  • idea上传到github以及移除文件操作
  • Modifier ‘private‘ not allowed here
  • 验证线程池扩展能力的测试方法的问题
  • win10 wifi有时候搜索不到
  • Mac 命令行关闭和打开蓝牙
  • AirPods Pro 卡顿或突然没声音的原因之一
  • 学习Git
  • git branch -f的作用
  • 【腾讯Bugly干货分享】从0到1打造直播 App
  • 4. 路由到控制器 - Laravel从零开始教程
  • AzureCon上微软宣布了哪些容器相关的重磅消息
  • gf框架之分页模块(五) - 自定义分页
  • Python利用正则抓取网页内容保存到本地
  • react 代码优化(一) ——事件处理
  • TiDB 源码阅读系列文章(十)Chunk 和执行框架简介
  • vue-cli3搭建项目
  • vue的全局变量和全局拦截请求器
  • Web标准制定过程
  • 电商搜索引擎的架构设计和性能优化
  • 将 Measurements 和 Units 应用到物理学
  • 如何学习JavaEE,项目又该如何做?
  • 数据可视化之下发图实践
  • ​ 无限可能性的探索:Amazon Lightsail轻量应用服务器引领数字化时代创新发展
  • #快捷键# 大学四年我常用的软件快捷键大全,教你成为电脑高手!!
  • $redis-setphp_redis Set命令,php操作Redis Set函数介绍
  • (4)通过调用hadoop的java api实现本地文件上传到hadoop文件系统上
  • (附源码)spring boot基于Java的电影院售票与管理系统毕业设计 011449
  • (附源码)spring boot网络空间安全实验教学示范中心网站 毕业设计 111454
  • (附源码)springboot码头作业管理系统 毕业设计 341654
  • (附源码)SSM环卫人员管理平台 计算机毕设36412
  • (转)Android学习系列(31)--App自动化之使用Ant编译项目多渠道打包
  • (转)程序员技术练级攻略
  • *p=a是把a的值赋给p,p=a是把a的地址赋给p。
  • .[hudsonL@cock.li].mkp勒索病毒数据怎么处理|数据解密恢复
  • .bat批处理(五):遍历指定目录下资源文件并更新
  • .java 指数平滑_转载:二次指数平滑法求预测值的Java代码
  • .NET 4 并行(多核)“.NET研究”编程系列之二 从Task开始
  • .NET 5.0正式发布,有什么功能特性(翻译)
  • .net core webapi 大文件上传到wwwroot文件夹
  • .Net组件程序设计之线程、并发管理(一)
  • @DateTimeFormat 和 @JsonFormat 注解详解
  • [ C++ ] STL priority_queue(优先级队列)使用及其底层模拟实现,容器适配器,deque(双端队列)原理了解
  • [android] 天气app布局练习
  • [C#]winform利用seetaface6实现C#人脸检测活体检测口罩检测年龄预测性别判断眼睛状态检测
  • [CareerCup][Google Interview] 实现一个具有get_min的Queue
  • [ESP32 IDF]web server
  • [exgcd] Jzoj P1158 荒岛野人
  • [IE技巧] 如何关闭Windows Server版IE的安全限制