【问题标题】:Change servlet mapping depending on Tomcat context根据 Tomcat 上下文更改 servlet 映射
【发布时间】:2015-09-14 19:06:05
【问题描述】:

我想在特定的 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>

这可能吗?

【问题讨论】:

    标签: java tomcat servlets


    【解决方案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("");
            }
        }
    }
    

    【讨论】:

    • 问了一个后续问题,但认为我想通了(删除它)。非常感谢这个答案。
    猜你喜欢
    • 1970-01-01
    • 2018-11-24
    • 1970-01-01
    • 1970-01-01
    • 2012-03-15
    • 2013-10-11
    • 2016-10-28
    • 2010-11-08
    • 2011-10-05
    相关资源
    最近更新 更多