1、Web.xml作用
Web.xml是Java Web项目中的一个配置文件,主要用于配置首页、Filter、Listener、Servlet等。
tomcat在部署启动web应用时,会解析加载${CATALINA_HOME}/conf目录下所有web应用通用的web.xml,然后解析加载web应用目录中的WEB-INF/web.xml。如果没有WEB-INF/web.xml文件,tomcat会输出找不到的消息,但仍然会部署并使用web应用程序,因此,这个web.xml并不是必要的,不过通常最好还是让每一个上线的web应用程序都有一个自己的WEB-INF/web.xml。
conf/web.xml文件中的设定会应用于所有的web应用程序,而web应用程序的WEB-INF/web.xml中的设定只应用于该应用程序本身。
2、web.xml配置详解
2.1、web.xml加载过程
1、启动Web应用时,容器(tomcat)会去读取web.xml文件的</listener>和 </context-param>两个节点;
2、容器创建一个ServletContext(上下文);
3、容器以的name作为键,value作为值,将其转化为键值对,存入ServletContext。
4、容器创建</listener>中的类实例,根据配置的class类路径<listener-class>来创建监听,在监听中会有contextInitialized(ServletContextEvent args)初始化方法,启动Web应用时,系统调用Listener的该方法。
5、容器初始化</filter>,web.xml中可以定义多个 filter,初始化每个 filter 时,是按照 filter 配置节出现的顺序来初始化的,当请求资源匹配多个 filter-mapping 时,filter 拦截资源是按照 filter-mapping 配置节出现的顺序来依次调用 doFilter() 方法的;
6、容器初始化</servlet>,servlet 同 filter 类似。
那么,web项目启动时,可以知道web.xml文件各个节点的加载顺序:context-param -> listener -> filter -> servlet
context-param元素含有一对参数名和参数值,用作应用的Servlet上下文初始化参数,参数名在整个Web应用中必须是惟一的,在web应用的整个生命周期中上下文初始化参数都存在,任意的Servlet和jsp都可以随时随地访问它。在servlet里面可以通过getServletContext().getInitParameter(“context/param”)得到。