我想在特定的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>
这可能吗?
答案 0 :(得分: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("");
}
}
}