美文网首页
SpringMVC理解9大组件

SpringMVC理解9大组件

作者: 每天进步一一点 | 来源:发表于2018-05-02 14:08 被阅读0次

    首先理解一下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);

    相关文章

      网友评论

          本文标题:SpringMVC理解9大组件

          本文链接:https://www.haomeiwen.com/subject/knezkftx.html