2016-12-27 50 views
0

我写了下面的类来以编程方式注册多个servlet,但它不起作用,任何人都可以帮助我解决这个问题。如何以编程方式在WebApplicationInitializer中注册多个servlet?

public class appIntializer implements WebApplicationInitializer { 

    @Override 
    public void onStartup(ServletContext context) throws ServletException { 
     XmlWebApplicationContext appCtxt = new XmlWebApplicationContext(); 
     appContext.setConfigLocation("/WEB-INF/MVCLogin-servlet.xml"); 
     context.addListener(new ContextLoaderListener(appCtxt)); 

     ServletRegistration.Dynamic dispatcher = context.addServlet("MVC", 
       new DispatcherServlet(appCtxt)); 
     ServletRegistration.Dynamic testServlet= context.addServlet(
       "Test", TestServlet.class); 
     testServlet.addMapping("/test"); 

     Dynamic securityFilter = context.addFilter(
       AbstractSecurityWebApplicationInitializer.DEFAULT_FILTER_NAME, 
       DelegatingFilterProxy.class); 
     securityFilter.addMappingForUrlPatterns(
       EnumSet.allOf(DispatcherType.class), false, "/*"); 
     dispatcher.setLoadOnStartup(1); 
     dispatcher.addMapping("/"); 

    } 
} 

我应该在Web应用程序初始化时加载这两个servlet。

+0

什么不起作用。 –

+0

我在初始化期间无法加载servlet –

+1

您只在启动时加载1个servlet。 –

回答

1

我错过了setLoadonstartup这个问题。

public class appIntializer implements WebApplicationInitializer { 

@Override 
public void onStartup(ServletContext context) throws ServletException { 
    XmlWebApplicationContext appCtxt = new XmlWebApplicationContext(); 
    appContext.setConfigLocation("/WEB-INF/MVCLogin-servlet.xml"); 
    context.addListener(new ContextLoaderListener(appCtxt)); 

    ServletRegistration.Dynamic dispatcher = context.addServlet("MVC", 
      new DispatcherServlet(appCtxt)); 
    ServletRegistration.Dynamic testServlet= context.addServlet(
      "Test", TestServlet.class); 
    testServlet.setLoadOnStartup(2); 
    testServlet.addMapping("/test"); 

    Dynamic securityFilter = context.addFilter(
      AbstractSecurityWebApplicationInitializer.DEFAULT_FILTER_NAME, 
      DelegatingFilterProxy.class); 
    securityFilter.addMappingForUrlPatterns(
      EnumSet.allOf(DispatcherType.class), false, "/*"); 
    dispatcher.setLoadOnStartup(1); 
    dispatcher.addMapping("/"); 

}} 
相关问题