Spring MVC DispatcherServlet的初始化

来源:互联网 发布:知乎 性观念 编辑:程序博客网 时间:2024/05/01 06:51
protected void initStrategies(ApplicationContext context){initMultipartResolver(context);initLocaleResolver(context);initThemeResolver(context);initHandlerMappings(context);initHandlerAdapters(context);initHandlerExceptionResolvers(context)initRequestToViewNameTranslator(context);initViewResolvers(context);}


1、initMultipartResolver:初始化 MultipartResolver用于处理文件上传服务,如果有文件上传,那么会将当前HttpServletRequest包装成DefaultMultipartHttpServletRequest,并将每个上传内容封装成CommonsMultipartFile 对象。

2、initLocaleResvlver:用于处理应用中的国际化问题,通告解析请求的Locale和设置响应的Locale来控制应用中的字符编码问题。

3、initThemeResolver:用于定义一个主题,例如,可以根据用户的喜好来设置用户访问的页面样式,可以将这个样式作为一个ThemeName保存,保存在于请求的Cookie中或者保存在服务端的session中,以后每次请求根据这个Theme Name返回特定内容。

4、initHandlerMappings:用于定义用户设置的请求映射关系,例如,SimpleUrlHandlerMapping把用于用户请求的URL映射城一个个Handler实例。对于HandlerMapping必须定义,如果没有定义,将获取DispatcherServlet.properties文件中默认的两个HandlerMapping,分别是BeanNameUrlHandlerMapping 和DefaultAnnotationHandlerMapping。

5、initHandlerAdapters:用于根据Handler的类型定义不同的处理规则,例如。定义SimpleControllerHandlerAdapter处理所有Controller的实例对象,在HandlerMapping中将URL映射成一个Controller实例,那么Spring MVC在解析时SimpleControllerHandlerAdapter就会调用这个Controller实例。同样对HandlerAdapters也必须定义,如果没有定义,将获取DispatcherServlet.properties文件中默认的4个HandlerAdapters,分别是HttpResquestHandlerAdapter、SimpleControllerHandlerAdapter、ThrowawayControllerHandlerAdapter和AnnotationMethodHandlerAdapter。

6、intiHandlerExceptionResolvers:当Handler处理出错时,会通过这个Handler来统一处理,默认的实现类是SimpleMappingExceptionResolver。将错误日志记录在log文件中,并转到默认的错误页面。

7、initRequestToViewNameTranslator:将指定的ViewName按照定义的RequestToViewNameTranslator替换成想要的格式,如加上后缀或者前缀等。

8、initViewResolvers:用于将View解析成页面,在ViewResolvers中可以设置多个解析策略,如可以根据JSP来解析,或者按照Velocity模板解析。默认的解析策略是InternalResourceViewResolver,按照JSP页面解析。

 

摘自:深入解析 Java Web技术内容 Spring MVC篇




原创粉丝点击