我的Tomcat部署在conf文件夹下有一个web.xml文件。相对于WEB-INF下的那个,conf/web.xml在Tomcat中有什么用途?我需要它吗?
是的,你肯定需要它!它包含了默认servlet和JSP servlet的声明,以及其他内容。默认servlet和JSP servlet是其中之一。如果没有它,所有未映射到任何Servlet的请求(例如CSS/JS/images)将停止工作,并且所有JSP请求将返回为纯文本源代码。
此外,它还包含大量的MIME类型映射,以便根据文件扩展名设置正确的内容类型。如果没有它,所有内容都将作为application/octet-stream
传递,并且浏览器可能无法解释内容。
不要删除Tomcat自己的web.xml
。它包含了最少的设置,使您的Web应用程序正常工作所需的设置。您最多可以在那里更改默认servlet和JSP servlet的初始化参数,例如启用/禁用目录列表和启用/禁用空格修剪以及其他小型性能设置。您也可以在那里添加额外的MIME类型映射,但您也可以在您Web应用程序自己的web.xml
中执行此操作。这也明确在Tomcat的web.xml
的第一个注释块中提到:
<!-- ======================== Introduction ============================== -->
<!-- This document defines default values for *all* web applications -->
<!-- loaded into this instance of Tomcat. As each application is -->
<!-- deployed, this file is processed, followed by the -->
<!-- "/WEB-INF/web.xml" deployment descriptor from your own -->
<!-- applications. -->
<!-- -->
<!-- WARNING: Do not configure application-specific resources here! -->
<!-- They should go in the "/WEB-INF/web.xml" file in your application. -->
WEB-INF
下的 web.xml
是一种部署描述符,仅适用于当前Web应用程序,并因此控制该Web应用程序的运行。它允许您定义servlet、servlet映射到URL、上下文(启动)参数等。 conf
目录下的 web.xml
定义了Tomcat实例上所有应用程序的默认参数。理论上,这可能会丢失,但随后部署的所有Web应用程序都必须在其中定义所有设置,以便.jsp页面由JspServlet处理(将编译它们并加载生成的servlet等),所有mime映射和默认文件列表(对于那些没有指定的应用程序)。将其视为一组默认值,您始终可以覆盖它们,但是它们存在是为了方便您,因此您不需要为每个应用程序定义它们。 < / p >
web.xml
文件并理解Servlet容器的默认操作也是值得努力的。 - BalusC