加载顺序
在web.xml文件中元素的加载顺序与它们在 web.xml 文件中的先后顺序无关。加载的顺序是:context-param->listener -> filter -> servlet
context-param,它用于向 ServletContext 提供键值对,即应用程序上下文信息。我们的 listener, filter 等在初始化时会用到这些上下文中的信息,然而对于某些配置节而言,它们出现的顺序是有先后关联的。以 filter 为例,web.xml 中可以定义多个 filter,与 filter 相关的一个配置节是 filter-mapping,这里一定要注意,对于拥有相同 filter-name 的 filter 和 filter-mapping 配置节而言,filter-mapping 必须出现在 filter 之后,否则当解析到 filter-mapping 时,它所对应的 filter-name 还未定义。web 容器启动时初始化每个 filter 时,是按照 filter 配置节出现的顺序来初始化的,当请求资源匹配多个 filter-mapping 时,filter 拦截资源是按照 filter-mapping 配置节出现的顺序来依次调用 doFilter() 方法的。servlet 同 filter 类似 ,此处不再赘述。而同个类型之间的实际程序调用的时候的顺序是根据对应的 mapping 的顺序进行调用的。web.xml常见配置详解
========================================================================
display-name | 定义了WEB应用的名字 |
description | 声明WEB应用的描述信息 |
context-param | 元素声明应用范围内的初始化参数 |
filter | 过滤器元素将一个名字与一个实现javax.servlet.Filter接口的类相关联 |
filter-mapping | 一旦命名了一个过滤器,就要利用filter-mapping元素把它与一个或多个servlet或JSP页面相关联 |
listener | 捕捉服务器的启动和停止,触发相应的方法 |
servlet | 在向servlet或JSP页面制定初始化参数或定制URL时,必须首先命名servlet或JSP页面。Servlet元素就是用来完成此项任务的 |
servlet-mapping | 服务器一般为servlet提供一个缺省的URL:http://host/webAppPrefix/servlet/ServletName。但是,常常会更改这个URL,以便servlet可以访问初始化参数或更容易地处理相对URL。在更改缺省URL时,使用servlet-mapping元素。 |
session-config | 如果某个会话在一定时间内未被访问,服务器可以抛弃它以节省内存。 可通过使用HttpSession的setMaxInactiveInterval方法明确设置单个会话对象的超时值,或者可利用session-config元素制定缺省超时值。 |
welcome-file-list | 欢迎页 |
error-page | 返回特定HTTP状态代码时,或者特定类型的异常被抛出时,能够制定将要显示的页面。 |
resource-ref | 声明一个资源工厂使用的外部资源 |