1

我们想在 Tomcat、WebLogic、WebSphere 和 JBoss 上部署我们的应用程序。我们应用程序的 web.xml 需要包含到默认 servlet 的映射。

对于 Tomcat,这个 servlet 被命名为“default”,所以我们的映射将显示为:

<servlet-mapping>
    <servlet-name>default</servlet-name>
    <url-pattern>/js/calendar/flexcal.html</url-pattern>
</servlet-mapping>

但在其他平台上它会发生变化(即 WebLogic 是“FileServlet”)。

有没有办法定义一个条件映射,它会根据可用的内容而改变?如果不是,我们应该如何处理这个问题?

谢谢!

4

1 回答 1

5

不可能。

您最好不要以任何方式显式映射到容器的默认 servlet。您不仅将您的 webapp 与特定容器紧密耦合,而且直到大约一年前,在 Tomcat 和克隆(JBoss、WebSphere 等)中这样做时还存在一个巨大的安全漏洞。它使攻击者能够在默认 servlet 映射到/WEB-INF与. 另请参阅问题 50026,由您真实报告。/META-INF/

而是将您的前端控制器 servlet 映射到更具体的 URL 模式,而不是/*创建和映射一个全局过滤器,/*根据当前请求 URI 转发到前端控制器或继续到默认 servlet。另请参阅如何在 /* 上映射全局前端控制器 servlet 时访问静态资源的具体示例。

于 2012-03-23T14:30:28.263 回答