2013-05-16 49 views
1

使用Servlet 2.5,可以通過簡單複製和編輯以下xml標記來使用web.xml文件中配置的多個servlet。Spring 3,AbstractAnnotationConfigDispatcherServletInitializer,多個servlet

<servlet> 
    <servlet-name>appServlet</servlet-name> 
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
    <init-param> 
     <param-name>contextConfigLocation</param-name> 
     <param-value>/WEB-INF/spring/appServlet/servlet-context.xml</param-value> 
    </init-param> 
    <load-on-startup>1</load-on-startup> 
</servlet> 

<servlet-mapping> 
    <servlet-name>appServlet</servlet-name> 
    <url-pattern>/</url-pattern> 
</servlet-mapping> 

是它在某種程度上可以使用Spring的AbstractAnnotationConfigDispatcherServletInitializer從Servlet 3創建多個servlet?

我認爲在getServletConfigClasses()方法中返回2個類並且在getServletMappings()方法中返回2個路徑就足夠了,但這並不像我預期的那樣工作。

那麼,有沒有一種(簡單)的方式來配置使用Spring 3和Servlet 3的多個servlet?

謝謝你的回答!

回答

1

你可以這樣做:

public class MyWebAppInitializer implements WebApplicationInitializer { 

    @Override 
    public void onStartup(ServletContext container) { 

     XmlWebApplicationContext appContext = new XmlWebApplicationContext(); 
     appContext.setConfigLocation("/WEB-INF/spring/dispatcher-config.xml"); 

    ServletRegistration.Dynamic dispatcher = 
     container.addServlet("dispatcher", new DispatcherServlet(appContext)); 
     dispatcher.setLoadOnStartup(1); 
     dispatcher.addMapping("/"); 

    ServletRegistration.Dynamic anotherServlet = 
     container.addServlet("anotherServlet", "com.xxx.AnotherServlet"); 
     anotherServlet.setLoadOnStartup(2); 
     anotherServlet.addMapping("/another/*"); 

    ServletRegistration.Dynamic yetAnotherServlet = 
     container.addServlet("yetAnotherServlet", "com.xxx.YetAnotherServlet"); 
     yetAnotherServlet.setLoadOnStartup(3); 
     yetAnotherServlet.addMapping("/yetanother/*"); 

    } 

} 

Ofcourse,你可以使用任何的addServlet()方法按你的方便。

+0

完美!我甚至不知道ServletRegistration類。謝謝! – user2391602

相關問題