在Spring 4中使用@enablewebmvc注释时如何向servlet添加过滤器?

时间:2015-07-08 20:30:50

标签: spring spring-mvc servlets

这是当前配置

' '.join(filter(lambda x: x not in ['junk1', 'junk2'] , line.split()))

现在我想使用public class WebAppConfig implements WebApplicationInitializer { private static final String CHARACTER_ENCODING_FILTER_ENCODING = "UTF-8"; private static final String CHARACTER_ENCODING_FILTER_NAME = "characterEncoding"; private static final String CHARACTER_ENCODING_FILTER_URL_PATTERN = "/*"; private static final String DISPATCHER_SERVLET_NAME = "dispatcher"; private static final String DISPATCHER_SERVLET_MAPPING = "/"; @Override public void onStartup(ServletContext servletContext) throws ServletException { AnnotationConfigWebApplicationContext rootContext = new AnnotationConfigWebApplicationContext(); rootContext.register(ExampleApplicationContext.class); configureDispatcherServlet(servletContext, rootContext); EnumSet<DispatcherType> dispatcherTypes = EnumSet.of(DispatcherType.REQUEST, DispatcherType.FORWARD); configureCharacterEncodingFilter(servletContext, dispatcherTypes); servletContext.addListener(new ContextLoaderListener(rootContext)); } private void configureDispatcherServlet(ServletContext servletContext, WebApplicationContext rootContext) { ServletRegistration.Dynamic dispatcher = servletContext.addServlet( DISPATCHER_SERVLET_NAME, new DispatcherServlet(rootContext) ); dispatcher.setLoadOnStartup(1); dispatcher.addMapping(DISPATCHER_SERVLET_MAPPING); } private void configureCharacterEncodingFilter(ServletContext servletContext, EnumSet<DispatcherType> dispatcherTypes) { CharacterEncodingFilter characterEncodingFilter = new CharacterEncodingFilter(); characterEncodingFilter.setEncoding(CHARACTER_ENCODING_FILTER_ENCODING); characterEncodingFilter.setForceEncoding(true); FilterRegistration.Dynamic characterEncoding = servletContext.addFilter(CHARACTER_ENCODING_FILTER_NAME, characterEncodingFilter); characterEncoding.addMappingForUrlPatterns(dispatcherTypes, true, CHARACTER_ENCODING_FILTER_URL_PATTERN); } }

@EnableWebMvc

我如何将@EnableWebMvc @ComponentScan(basePackages = { "com.example.mvc.base.controller" }) public class WebAppConfig extends WebMvcConfigurerAdapter { } filters添加到我使用Listeners进行的servletContext?

1 个答案:

答案 0 :(得分:0)

  1. 您仍然可以通过WebApplicationInitializer继续添加过滤器和侦听器。此类方法启动Web应用程序,其中Servlet已注册所需的上下文和bean。
  2. 在此类中创建一个DispatcherServlet,其中包含以编程方式配置的AnnotationConfigWebApplicationContext。该调度程序也映射到.html。
  3. WebAppConfig类基于注释启用WebMVC,并扫描基础包以获取带注释的资源。这些由WebApplicationInitializer初始化的默认servlet的Web应用程序上下文进一步注册。