web.xml的配置及加载顺序
来源:互联网 发布:wps表格怎么匹配数据 编辑:程序博客网 时间:2024/05/21 17:08
一web.xml加载过程(步骤):
1.启动WEB项目的时候,容器(如:Tomcat)会去读它的配置文件web.xml.读两个节点:
<context-param></context-param>和 <listener></listener>
2.紧接着,容器创建一个ServletContext(上下文),这个WEB项目所有部分都将共享这个上下文.
3.容器将<context-param></context-param>转化为键值对,并交给ServletContext.
4.容器创建<listener></listener>中的类实例,即创建监听
二 、 load-on-startup:控制servlet的加载顺序
load-on-startup 元素在web应用启动的时候指定了servlet被加载的顺序,它的值必须是一个整数。如果它的值是一个负整数或是这个元素(servlet配置元素)不存在,那么容器会在该 servlet被调用的时候,加载这个servlet 。如果值是正整数或零,容器在配置的时候就加载并初始化这个servlet,正数的值越小,启动该servlet的优先级越高。如果值相等,容器可以自动选择先加载谁。 如果servlet的配置元素中没有load-on-startup元素的配置,则servlet的加载顺序按照servlet-mapping出现的顺序控制
三 、加载顺序
首先可以肯定的是,加载顺序与它们在 web.xml 文件中的先后顺序无关。即不会因为 filter 写在 listener 的前面而会先加载 filter。最终得出的结论是:ServletContext (并没有在web.xml中进行配置,服务器启动创建的容器)-> listener -> filter -> servlet
同时还存在着这样一种配置节:context-param(加载spring、加载log4j资源文件),它用于向 ServletContext 提供键值对,即应用程序上下文信息。我们的 listener, filter 等在初始化时会用到这些上下文中的信息,那么 context-param 配置节是不是应该写在 listener 配置节前呢?实际上 context-param 配置节可写在任意位置,因此真正的加载顺序为:context-param -> listener -> filter -> servlet
对于某类配置节而言,与它们出现的顺序是有关的。以 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() 方法的。
由此,可以看出,web.xml 的加载顺序是:ServletContext -> context-param -> listener -> filter -> servlet ,而同个类型之间的实际程序调用的时候的顺序是根据对应的 mapping 的顺序进行调用的。
四 、 web.xml文件详解
我将自己知道的web.xml的元素整理了一下:
1、web.xml首先是肯定要包含它的schema,version="2.4"表示servlet的版本号,对应的jsp版本应该是2.0,tomcat为5,
。。。。
</web-app>
其它的元素都放在<web-app></web-app>之中。
在此设定的参数,可以在servlet中用 getServletContext().getInitParameter("my_param") 来取得
2、listener
3.2、filter-mapping
4.1、servlet
4.2、servlet-mapping
6、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
声明一个资源工厂使用的外部资源
- web.xml的配置及加载顺序
- web.xml的配置及加载顺序
- web.xml的配置及加载顺序
- web.xml的配置及加载顺序
- web.xml的配置及加载顺序
- web.xml各个配置的加载顺序
- web.xml配置加载的顺序
- web.xml配置加载顺序
- Web.xml的配置及加载
- Web.xml的配置及加载 .
- web.xml的加载顺序
- web.xml的加载顺序
- web.xml的加载顺序
- web.xml的加载顺序
- web.xml 的加载顺序
- web.xml配置的元素加载顺序和详解
- web.xml各配置元素的加载顺序
- web.xml加载过程及顺序
- jquery表单验证提交删除
- Router-link跳转路径的书写的几种方式
- 圆形播放器控件
- 内联函数详解
- ajax 设置Access-Control-Allow-Origin实现跨域访问(post跨域),CORS
- web.xml的配置及加载顺序
- 字节流转换为字符串的方法
- sap abap 多个表inner join on
- 深度增强学习漫谈 从DQN到
- [Lintcode] #1 A + B 问题
- POJ 2485.Highways
- 数据结构:树的基础知识
- 关于MEMCPY的BUG
- AFN Post请求,报错400(code:-1011)