什么是web.xml文件? web.xml文件是Java web项目中的一个配置文件,主要用于配置欢迎页、Filter、Listener、Servlet等,但并不是必须的,一个java web项目没有web.xml文件照样能跑起来。Tomcat容器/conf目录下也有作用于全局web应用web.xml文件,当一个web项目要启动时,Tomcat会首先加载项目中的web.xml文件,然后通过其中的配置来启动项目,只有配置的各项没有错误时,项目才能正常启动。

那么web.xml文件中到底有些什么内容呢?我们要如何去配置它以适应我们的项目呢?

Tomcat加载资源顺序

Tomcat启动时加载资源主要有三个阶段:

第一阶段:JVM相关资源

(1)$JAVA_HOME/jre/lib/ext/.jar (2)系统classpath环境变量中的.jar和*.class

第二阶段:Tomcat自身相关资源

(1)$CATALINA_HOME/common/classes/.class (2)$CATALINA_HOME/commons/endorsed/.jar  (3)$CATALINA_HOME/commons/i18n/.jar  (4)$CATALINA_HOME/common/lib/.jar (5)$CATALINA_HOME/server/classes/.class (6)$CATALINA_HOME/server/lib/.jar (7)$CATALINA_BASE/shared/classes/.class(8)$CATALINA_BASE/shared/lib/.jar

第三阶段:Web应用相关资源

(1)具体应用的webapp目录:/WEB-INF/classes/.class  (2)具体应用的webapp: /WEB-INF/lib/.jar在同一个文件夹下,jar包是按顺序从上到下依次加载,由ClassLoader的双亲委托模式加载机制我们可以知道,假设两个包名和类名完全相同的class文件不再同一个jar包,如果一个class文件已经被加载java虚拟机里了,那么后面的相同的class文件就不会被加载了。