Web.xml配置文件详解
目录
web.xml文件加载顺序
web.xml文件是用来初始化配置信息:比如Welcome页面、servlet、servlet-mapping、filter、listener、启动加载级别等。
web.xml文件加载顺序如下:
- 启动一个WEB项目,WEB容器会先去读取它的配置文件web.xml,读取<context-param>和<listener>两个节点。
- 容器创建一个ServletContext(servlet上下文,也就是四大作用域之一的application),这个web项目的所有部分都讲共享这个上下文。
- 容器将<context-param>转换为键值对,并交给servletContext。在servlet中可根据方法获得参数值。
- 容器创建<listener>中的类实例,创建监听器。
- 加载filter。
- 加载Servlet,并在第一次请求时创建Servlet实例,或者当web容器启动时自动创建(需配置)。
web.xml文件中的元素
在web.xml文件中,根元素为<web-app></web-app>,该元素下包含23个子元素,且这些子元素都是可选的。
icon? | display-name? | description? | distributable? | context-param* | filter* | filter-mapping* |
listener* | servlet* | servlet-mapping* | session-config? | mime-mapping* | welcome-file-list? | error-page* |
taglib* | resource-env-ref* | resource-ref* | security-constraint* | login-config? | security-role* | env-entry* |
ejb-ref* | ejb-local-ref* |
注:
- 问号(?)表示子元素是可选的,而且只能出现一次。
- 星号(*)表示子元素可在部署描述符中出现零次或多次。
- 在Servlet 2.3中,子元素必须按照DTD文件语法描述中指定的顺序出现。 比如:如果部署描述符中的<web-app>元素有<servlet>和<servlet-mapping>两个子元素,则<servlet>子元素必须出现在<servlet-mapping>子元素之前。在Servlet2.4中,顺序并不重要。
web.xml中部份元素详解
- <display-name></display-name>定义了web应用的名称,可以在http://localhost:8080/manager/html中显示。
- <distributable/>告诉servlet/JSP容器,Web容器中部署的应用程序适合在分布式环境下运行。
- <context-param></context-param>上下文初始化参数
- <session-config></session-config>用于设置容器的session参数。比如:<session-timeout> 用于指定http session的失效时间(单位分钟)。
- <listener></listener>为web应用程序定义监听器,监听器用来监听各种事件。
- <filter></filter>用来定义Filter过滤器。主要用于对用户请求request进行预处理,也可以对Response进行后处理。
- <servlet></servlet>定义Servlet类,用于处理及响应客户的请求。
- <welcome-file-list></welcome-file-list>用来指定首页文件名称。
- <error-page></error-page>用来配置错误页面,可以通过异常类型或者错误代码来配置。