前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Spring MVC组件

Spring MVC组件

作者头像
用户2909867
发布2018-08-22 11:17:36
3340
发布2018-08-22 11:17:36
举报
文章被收录于专栏:互联网大杂烩

DispatcherServlet初始化了9个组件

HandlerMapping

根据request找到相应的处理器Handler和Interceptors,HanddlerMaping接口只有一个方法,getHandler()

HandlerAdapter

一共三个方法, supports(),判断是否可以使用某个Handler。 handler方法是用来具体使用Handler干活。 getLastModified是获取资源的Last-Modified,Last-Modified是资源最后一次修改的时间。 选择哪个HandlerAdapter的过程在getHandlerAdapter方法中,它的逻辑是遍历所有的Adapter,然后检查哪个可以处理当前的Handler,找到第一个可以处理Handler的Adapter后就停止查找并将其返回。 HandlerAdapte需要注册到Spring MVC的容器中,注册方法和HandlerMapping一样,只要配置Bean就可以。Handler是从HandlerMapping返回的。

HandlerExceptionResolver

根据异常设置ModelAndView,之后再交给render方法进行渲染。render只负责将ModelAndView渲染成页面。 HandlerExceptionResolver只有一个方法,只需要从异常解析出ModelAndView就可以,具体实现可以维护一个异常为key,View为value的Map,解析时直接从Map里获取View,如果Map里没有相应的异常可以返回默认的View。

ViewResolver

ViewResolver用来将String类型的视图名和Locale解析为View类型的视图,ViewResolver接口也非常简单。只定义了: View resolveViewName(String viewName,Locale locale)throws Exception

RequestToViewNameTranslator

ViewResolver是根据ViewName查找View,但有的Handler处理完之后并没有设置View也没有设置viewName,这时就需要从request获取ViewName了,而如何从request获取view-Name就是RequestToViewNameTranslator要做的事情。 定义了一个getViewName方法,只要通过request获取到viewName就可以了。

LocaleResolver

解析视图需要两个参数:一个是视图名,另一个是Locale。 LocaleResolver用于从request解析出Locale。接口只定义两个方法: resolveLocale(HttpServletRequest request) 从request中解析出Locale和将特定的Locale设置给某个request。 setLocale(HttpServletRequest request,HttpServletResponse response,Locale locale)

ThemeResolver

解析主题用的。 Spring MVC中又一套主题对应一个properties文件,里面存放着跟当前主题相关的所有资源。

MultipartResolver

用于处理上传请求,处理方法是将普通的request包装成MultipartHttpServletrequest,MultipartHttpServletrequest可以直接调用getFile方法获取到File,如果上传多个文件,还可以调用getFileMap得到FileName-File结构的Map. 这个接口有三个方法, 1.判断是不是上传请求, 2.将request包装成MultipartHttpServlet,处理完后清理上传过程中产生的临时资源。

FlashMapManager

FlashMap主要用在redirect中传递参数,而FlashMapManager用来管理FlashMap的。 该接口有两个方法。

代码语言:javascript
复制
FlashMap retrieveAndUpdate(HttpServletRequest request,HttpServletResponse,response)
void saveOutputFlashMap(FlashMap flash,HttpServletRequest request,HttpServletResponse response)
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017.08.19 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • HandlerMapping
  • HandlerAdapter
  • HandlerExceptionResolver
  • ViewResolver
  • RequestToViewNameTranslator
  • LocaleResolver
  • ThemeResolver
  • MultipartResolver
  • FlashMapManager
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档