web.xml文件是Java Web项目中的一个配置文件,主要用于配置欢迎页、Filter、Listener、Servlet等,但并不是必须的,一个Java Web项目没有web.xml文件也是照样能跑起来的。
1. web.xml各版本区别
首先来看一下Tomcat官网的Servlet和JSP规范规范与的Apache Tomcat版本之间的对应关系,如图:
从中可以清晰的看到不同版本的web.xml文件要使用相应版本的Tomcat服务器。
下面是各版本的web.xml配置的头部声明:
servlet 2.3
servlet 2.4
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_4.xsd" version="2.4">
servlet 2.5
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-app_2_5.xsd" version="2.5">
servlet 3.0
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-app_3_0.xsd" version="3.0">
servlet 3.1
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" version="3.1">
servlet 4.0
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" version="4.0">
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。
${CATALINA_HOME}/conf/web.xml文件中的设定会应用于所有的web应用程序,而web应用程序的WEB-INF/web.xml中的设定只应用于该应用程序本身。
2. web.xml配置详解
2.1 java web项目启动加载顺序
(1)启动WEB项目的时候,容器(如:Tomcat)会去读它的配置文件web.xml的两个节点:
(2)容器创建一个ServletContext(上下文);
(3)容器将
(4)容器创建
(5)容器初始化
(6)容器初始化
那么,web项目启动时,可以知道web.xml文件各个节点的加载顺序:context-param -> listener -> filter -> servlet。
2.2 web.xml中定义的元素
相应元素配置:
(1)Web应用图标
(2)Web 应用名称
(3)Web 应用描述
(4)上下文初始化参数
在servlet里面可以通过getServletContext().getInitParameter("context/param")得到。
(5)过滤器配置
(6)监听器配置
(7)Servlet配置
基本配置:
高级配置:
(8)会话超时配置(单位为分钟)
(9)MIME类型配置
(10)欢迎页配置
(11)配置错误页面
方法1:通过错误码来配置error-page
上面的配置当系统发生404错误时,页面将跳转到错误处理页面404.jsp
方法2:通过异常类型配置error-page
上面的配置当系统发生java.lang.NullException异常时,页面将跳转到错误处理页面error.jsp
(12)TLD配置
如果MyEclipse一直在报错,应该把
(13)资源管理对象配置
(14)资源工厂配置
配置数据库连接池就可在此配置:
(15)安全限制配置
(16)登陆验证配置
(17)安全角色:security-role元素给出安全角色的一个列表,这些角色将出现在servlet元素内的security-role-ref元素的role-name子元素中。分别地声明角色可使高级IDE处理安全信息更为容易。
(18)Web环境参数:env-entry元素声明Web应用的环境项
(19)EJB 声明
(20)本地EJB声明
3. web.xml示例
"http://java.sun.com/dtd/web-app_2_3.dtd">
HttpSessionBindingListener的实现类。该节点允许多个 -->
Tomcat Servet Configuraton Form-Based Authentication Area