1

使用 Servlet 2.5,可以通过简单地复制和编辑以下 xml 标记来使用在 web.xml 文件中配置的多个 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?

谢谢您的回答!

4

1 回答 1

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/*");

    }

 }

当然,您可以根据自己的方便使用任何addServlet()方法。

于 2013-05-17T05:43:36.003 回答