首先理解一下HandlerAdapter
HandlerAdapter需要注册当SpirngMVC的容器里,注册方法和HandlerMapping一样,只要配置一个Bean就可以了
这是一个接口,一共三个方法,
使用HandlerAdapter是因为SpirngMVC没有对处理器做任何的限制,处理器可以是任何合理的方式来表示,可以是一个类,方法
public interface HandlerAdapter {
//判断是否可以使用某个handler
boolean supports(Object var1);
ModelAndView handle(HttpServletRequest var1, HttpServletResponse var2, Object var3)throws Exception;
//根据名称,获取资源的Last-Modified:是资源最后一次的修改时间
long getLastModified(HttpServletRequest var1, Object var2);
}
HandlerExceptionResolver
ModelAndView resolveException(HttpServletRequest var1, HttpServletResponse var2, Object var3, Exception var4);
作用:用来请求解析过程中出现的异常
只有一个方法,从异常解析ModelAndView
ViewResolver
Locale确定了一种专门的语言和区域,通俗一点,就是根据不同语言定制的一种规则,一个类,可以根据不同语言构造不同的类
//根据viewName去查找View
ViewresolveViewName(String var1, Locale var2)throws Exception;
作用:用来将String类型的视图名和locale解析为View视图
使用:需要注册到SpringMVC的容器里 :默认:internalResourceViewResolver
RequestToViewNameTranslator
StringgetViewName(HttpServletRequest var1)throws Exception; ----方法
理解定义:ViewResolver是通过ViewName去查找view的,但是Handler处理完并没有设置view和viewName,这时候就需要request去
获取viewName,这时候RequestToViewNameTranslator就派上用场了
RequestToViewNameTranslator在SpirngMVC里面只配置一次,所以所以的request到ViewName的转换都要在有个Translator
LocaleResolver
LocaleContext resolveLocaleContext(HttpServletRequest var1);
void setLocaleContext(HttpServletRequest var1, HttpServletResponse var2, LocaleContext var3);
作用:ViewResolver用来获取viewName,RequestToViewNameTranslator用来获取request请求的view和viewName;
locale从那里获取?需要LocaleResolver
SpringMVC有两个地方用到了locale
1,view视图解析的时候,为了获取viewName
2,使用国际化主题的时候(目前不了解)
ThemeResolver
作用:解析主题用的
MultipartResolver(接口)
作用:处理上传请求的
//判断是否为上传请求
boolean isMultipart(HttpServletRequest request);
//将普通的request包装成MultipartHttpServletRequest
MultipartHttpServletRequest resolveMultipart(HttpServletRequest request)throws MultipartException;
//清理临时的上传资源
void cleanupMultipart(MultipartHttpServletRequest request);
FlashMapManager(接口)
理解参考:https://blog.csdn.net/xia4820723/article/details/51345559
flashmap的作用是在redirect中传递参数。大家都知道转发 request是不变的,重定向会生成新的request,那传递参数就不能直接用request进行传递。
//用于恢复参数,并将恢复过的和超过的参数从保存介质中删除
FlashMap retrieveAndUpdate(HttpServletRequest request, HttpServletResponse response);
//用于将参数保存起来
void saveOutputFlashMap(FlashMap flashMap, HttpServletRequest request, HttpServletResponse response);
网友评论