【转】web.xml 文件分模块拆分

在 Web 开发中,Servlet、Filter、Listener 等都配置在 web.xml 中。当系统做大,web.xml 则会变的越大,于是想着 web.xml 能不能像 struts.config 一样,按模块拆分成多个文件?

在网上找了半天也没找到,还是学哥厉害,找到了答案,在此向他致敬。

具体做法如下:

1,按模块将 servelet 从 web.xml 中拷贝出来,放到一个 test.xml 中,如 test.xml 中内容如下:

1
2
3
4
5
6
7
8
<servlet>
<servlet-name>testA</servlet-name>
<servlet-class>TestA</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>testA</servlet-name>
<url-pattern>/testA.do</url-pattern>
</servlet-mapping>

2,在我的 WEB-INF/web.xml 中引入 test.xml

1
2
3
4
5
6
7
8
9
10
11
12
13
<!DOCTYPE web-app
[
<!ENTITY test SYSTEM "file:///D:/eclipse/workspace/Test/WebRoot/WEB-INF/test.xml">
<!ENTITY admin SYSTEM "admin.xml">
]
>
<web-app version="2.5"
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_5.xsd"
>
&test;
&admin;

只要以上两步修改即可,web.xml 会在开头引入你的 test.xml,然后 &test; 表示你放的地方。

如果设定的是相当路径,可以如此设定:

如果 test.xml 和 web.xml 在同一个文件夹,则:[<!ENTITY test SYSTEM "test.xml">]

如果 test.xml 在 web.xml 所在文件夹的 ccc 文件夹中,则:[<!ENTITY test SYSTEM "ccc/test.xml">]

我的 servlet 是 2.5,2.4 应该也管用,其他版本没试过。

这样,我可以在系统开始设计时,将各个模块分开,便于以后系统拆分。

文章参考:http://readwall.blog.163.com/blog/static/10127132201151485150408/