大家好,
因为我的 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>
web.xml
<include file="servlet_mapping.xml"/>
这样就可以在 struts.xml 中加载 xml 文件。 (不确定在 web.xml 中是否可行)
这样的事情可能吗?或者还有其他方法可以让它发挥作用吗?
(为我糟糕的英语道歉)
提前致谢, 亚历克斯
最佳答案
Servlet 3.0 引入了 web 片段的概念,它解决了关于将 web.xml
拆分为多个文件的问题。这些片段可以包含部分(或全部)web 部署描述符,包括一个 META-INF/web-fragment.xml
<web-fragment metadata-complete="true" version="3.0"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-fragment_3_0.xsd">
<name>fragment1</name>
<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>
</web-fragment>
在 web.xml 中
...
<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>MyWelcomePage</servlet-name>
<servlet-class>MyWelcomePage</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>MyWelcomePage</servlet-name>
<url-pattern>/MyWelcomePage/*</url-pattern>
</servlet-mapping>
<session-config>
<session-timeout>30</session-timeout>
</session-config>
<absolute-ordering>
<name>fragment1</name>
</absolute-ordering>
</web-app>
关于java - Tomcat 将另一个 xml 文件包含到 web.xml,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25928486/