不同部署环境的默认servlet映射

Jam*_*mes 1 tomcat servlets weblogic web-applications webcontext

我们希望在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>
Run Code Online (Sandbox Code Playgroud)

但在其他平台上它会发生变化(即WebLogic是"FileServlet").

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

谢谢!

Bal*_*usC 5

没有办法.

您最好不要以任何方式显式映射到容器的默认servlet.您不仅要将webapp紧密耦合到特定容器,而且直到大约一年前,在Tomcat和克隆(JBoss,WebSphere等)中执行此操作时还存在巨大的安全漏洞.它允许攻击者在默认servlet映射到不同的URL模式时/WEB-INF以及/META-INF何时请求文件(包含可能的敏感信息)/.另见问题50026,由您真实报道.

而是将前端控制器servlet映射到更具体的URL模式而不是/*创建和映射全局过滤器,在/*该过滤器上转发到前端控制器或继续到默认servlet,具体取决于当前请求URI.有关具体示例,请参见如何在/*上映射全局前端控制器servlet时访问静态资源.