2015-09-14 102 views
1

我想在特定的Tomcat上下文中分配不同的默认servlet。根据Tomcat环境更改servlet映射

例如,当我的根上下文里面,我想用下面的servlet映射:

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

但是,当位于路径/img-data上下文里面,我想用:

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

这可能吗?

回答

1

如果您的应用程序在servlet 3.0+容器中运行,您可以使用ServletContextListener动态设置默认servlet,具体取决于上下文路径。

public class MyServletContextListener implements ServletContextListener { 
    @Override public void contextInitialized(ServletContextEvent event) { 
     ServletContext sc = event.getServletContext(); 
     if ("".equals(sc.getContextPath())) { 
      ServletRegistration.Dynamic dreg = sc.addServlet("pageservlet", new PageServlet()); 
      dreg.addMapping(""); 
     } 
    } 
} 
+0

问了一个后续问题,但我想我想通了(删除它)。非常感谢这个答案。 – user2066880