Java Tomcat在web.xml中包含另一个xml文件

Java Tomcat在web.xml中包含另一个xml文件,java,xml,jsp,tomcat,servlets,Java,Xml,Jsp,Tomcat,Servlets,大家好, 由于我的web.xml中有很多servlet映射,我想知道是否可以将所有映射存储到单独的文件中,然后将其包含到web.xml中 servervlet-mapping.xml <servlet> <servlet-name>red</servlet-name> <servlet-class>Test.Red</servlet-class> </servlet> <servlet-mapping

大家好,

由于我的web.xml中有很多servlet映射,我想知道是否可以将所有映射存储到单独的文件中,然后将其包含到web.xml中

servervlet-mapping.xml

<servlet>
    <servlet-name>red</servlet-name>
    <servlet-class>Test.Red</servlet-class>
</servlet>

<servlet-mapping>
    <servlet-name>red</servlet-name>
    <url-pattern>/blue</url-pattern>
</servlet-mapping>

<servlet>
    <servlet-name>blue</servlet-name>
    <servlet-class>Test.Blue</servlet-class>
</servlet>

<servlet-mapping>
    <servlet-name>blue</servlet-name>
    <url-pattern>/blue</url-pattern>
</servlet-mapping>
<include file="servlet_mapping.xml"/>

红色
测试,红色
红色
/蓝色的
蓝色
测试,蓝色
蓝色
/蓝色的
web.xml

<servlet>
    <servlet-name>red</servlet-name>
    <servlet-class>Test.Red</servlet-class>
</servlet>

<servlet-mapping>
    <servlet-name>red</servlet-name>
    <url-pattern>/blue</url-pattern>
</servlet-mapping>

<servlet>
    <servlet-name>blue</servlet-name>
    <servlet-class>Test.Blue</servlet-class>
</servlet>

<servlet-mapping>
    <servlet-name>blue</servlet-name>
    <url-pattern>/blue</url-pattern>
</servlet-mapping>
<include file="servlet_mapping.xml"/>

这样就可以在struts.xml中加载xml文件。(不确定在web.xml中是否也可以这样做)

这样的事情可能吗?或者有没有其他办法让它发挥作用

(为我糟糕的英语道歉)

提前感谢,,
Alex

如果您的servlet版本低于3.0,则您不能

如果您使用的是3.0,则有一个

在JSR315:JavaServlet3.0规范中,引入了web-fragment.xml,以实现打包在web-INF/lib下的库JAR的可插入性。web.xml和web-fragment.xml的内容几乎相同。可以在那里定义servlet、过滤器和侦听器。还可以在给定的web-fragment.xml中指定metadata complete=true。在后一种情况下,将跳过该jar中类的注释处理。使用web-fragment.xml,库JAR可以是自包含的,并提供与web相关的元数据信息

但是有两个
XML
可能会让你感到困惑。试试这个。

编辑:

来自以下@BalusC评论:


不要这样做!您基本上是在利用Tomcat特定的安全漏洞,该漏洞在较新的Tomcat版本中已修复,不一定存在于不同的服务器中。换句话说,带有这样一个web.xml的webapp是不可移植的。相关问题报告:bugzilla.redhat.com/show_bug.cgi?id=1069911

把答案留在这里,让读过这篇文章的人知道它是错的

原始答案

您可以尝试以下方法(基于外部XML实体的概念):

web.xml
文本替换过滤器
文本替换过滤器
&文本替换;

textplacements.xml
无论什么
无论何时

Servlet 3.0引入了web片段的概念,它解决了您关于将
web.xml
拆分为多个文件的问题。通过包含
META-INF/web fragment.xml


片段1
红色
测试,红色
红色
/蓝色的
蓝色
测试,蓝色
蓝色
/蓝色的
在web.xml中

。。。
index.html
MyWelcomePage
MyWelcomePage
1.
MyWelcomePage
/MyWelcomePage/*
30
片段1

您拥有它们是因为您前面问题的答案是。。。也许技术上是正确的,但不是解决问题的最佳方法。不要这样做!您基本上是在利用Tomcat特定的安全漏洞,该漏洞在较新的Tomcat版本中已修复,不一定存在于不同的服务器中。换句话说,带有这样一个web.xml的webapp是不可移植的。相关问题报告: