web.xml作用是用来初始化配置信息的。

比如:Welcome页面、servlet、servlet-mapping、filter、listener、启动加载级别等

web.xml加载过程(步骤)

当启动一个WEB项目的时候,容器(比如Tomcat等),首先会读取项目web.xml配置文件里的配置,如果这一步骤不出错且完成之后,项目才能正常启动起来

1、在启动Web项目时,容器(如Tomcat)会首先读web.xml配置文件中的两个节点<listener></listener><context-param></context-param>

2、接着容器会创建一个ServletContext(上下文),应用范围内即整个WEB项目都能够使用这个上下文。

3、接着容器会将<context-param>转化为键值对,以<context-param>的name为键,value为值,存入ServletContext。

4、容器根据配置的class类路径创建中的类实例,即创建监听(备注:listener定义的的类型是自定义的类但必须要继承ServletContextListener)。

5、监听器的类中会有一个contextInitialized(servletContextEvent event)初始化的方法,在这个方法中可以通过event.getServletContext().getInitParameter(“context-param的键”)来获得context-param设定的值,得到这个context-param的值之后,你就可以做一些操作了。在这个类中还必须有一个contextDestroyed(ServletContextEvent event)销毁方法,用于关闭资源应用前释放资源。

举例:如果你想在项目启动之前就打开数据库,就可以在<context-param>中设置数据库的连接方式(驱动、url、user、password),在监听类中初始化数据库的连接。这个监听是自己写的一个类,除了初始化方法,它应该还要有销毁方法,用于关闭应用前释放资源。就比如说这个数据库连接的关闭,此时调用contextDestroyed(servletContextEvent event),关闭Web应用时,系统调用Listener的该方法。

6、接着读取<filter></filter>,根据指定的类路径来实例化过滤器。

7、以上都是Web项目还没有完全启动起来的时候就已经完成了的工作。如果系统中有Servlet,则Servlet是在第一次发起请求的时候被实例化的,而且一般不会被容器销毁,它可以服务于多个用户的请求。所以,Servlet的初始化都要比上面提到的晚。

总结上面的步骤简化为: web.xml文件加载 >> 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()方法的,<servlet>同<filter>类似

举例

<web-app xmlns="http://java.sun.com/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://java.sun.com/xml/ns/javaeehttp://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"version="3.0"><display-name>Archetype Created Web Application</display-name><!--字符集过滤器--><filter><filter-name>encodingFilter</filter-name><filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class><init-param><param-name>encoding</param-name><param-value>UTF-8</param-value></init-param></filter><filter-mapping><filter-name>encodingFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping><!--springMVC--><servlet><servlet-name>springmvc</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><init-param><param-name>contextConfigLocation</param-name><param-value>classpath:spring-mvc.xml</param-value></init-param></servlet><servlet-mapping><servlet-name>springmvc</servlet-name><url-pattern>/</url-pattern></servlet-mapping><!--Spring容器--><listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener><!--指定项目阶段的上下文参数,上下文参数提供web应用程序所需的配置信息。 ---><context-param><param-name>contextConfigLocation</param-name><param-value>classpath:applicationContext.xml</param-value></context-param><!--springsecurity--><!--Spring Security过滤器链,注意过滤器名称必须叫springSecurityFilterChain--><filter><filter-name>springSecurityFilterChain</filter-name><filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class></filter><filter-mapping><filter-name>springSecurityFilterChain</filter-name><url-pattern>/*</url-pattern></filter-mapping><welcome-file-list><welcome-file>index.html</welcome-file></welcome-file-list>
</web-app>

指定登录页面位置的welcome-file-list元素(关于欢迎页面)访问一个网站时,默认看到的第一个页面就叫欢迎页,一般情况下是由首页来充当欢迎页的。一般情况下,我们会在web.xml中指定欢迎页。但 web.xml并不是一个Web的必要文件,没有web.xml,网站仍然是可以正常工作的。只不过网站的功能复杂起来后,web.xml的确有非常大用处,所以,默认创建的动态web工程在WEB-INF文件夹下面都有一个web.xml文件

JavaWeb项目 Web.xml文件详解(启动顺序)相关推荐

  1. javaweb web.xml文件详解

    web.xml文件详解 前言:一般的web工程中都会用到web.xml,web.xml主要用来配置,可以方便的开发web工程.web.xml主要用来配置Filter.Listener.Servlet等 ...

  2. javaweb:web.xml配置详解

    Web.xml详解: 1.web.xml加载过程(步骤) 首先简单讲一下,web.xml的加载过程.当启动一个WEB项目时,容器包括(JBoss.Tomcat等)首先会读取项目web.xml配置文件里 ...

  3. 160329(二)、web.xml配置详解

    1.启动一个WEB项目的时候,WEB容器会去读取它的配置文件web.xml,读取<listener>和<context-param>两个结点. 2.紧急着,容创建一个Servl ...

  4. Java web.xml 配置详解

    在项目中总会遇到一些关于加载的优先级问题,近期也同样遇到过类似的,所以自己查找资料总结了下,下面有些是转载其他人的,毕竟人家写的不错,自己也就不重复造轮子了,只是略加点了自己的修饰. 首先可以肯定的是 ...

  5. JavaWeb web.xml配置详解

    参考: XML 教程 Java web之web.xml配置详解 Javaweb三大组件是:Servlet,Filter,Listener. 1.Servlet Servlet作为中转处理的容器,连接了 ...

  6. Java web之web.xml配置详解

    什么是web.xml web.xml是web项目的配置文件,一般的web工程都会用到web.xml来配置,方便大型开发.web.xml主要用来配置Filter,Listener,Servlet等.但是 ...

  7. java web工程web.xml配置详解

    转载自:http://blog.csdn.net/believejava/article/details/43229361 这篇文章主要是综合网上关于web.xml的一些介绍,希望对大家有所帮助,也欢 ...

  8. [转]AndroidManifest.xml文件详解

    转自:http://www.cnblogs.com/greatverve/archive/2012/05/08/AndroidManifest-xml.html AndroidManifest.xml ...

  9. Maven的pom.xml文件详解------The Basics

    转载自  Maven的pom.xml文件详解------The Basics Maven坐标 GroupId.artifactId和version构成了Maven的坐标(groupId和version ...

最新文章

  1. 第十六届全国大学智能汽车竞赛竞速比赛规则
  2. 为什么黑客用python-为什么如此多的黑客都用python?
  3. spring-注入集合对象
  4. 2018/7/9-纪中某B组题【jzoj1503,jzoj1158,jzoj1161】
  5. java与python反转Ture与False的方法
  6. Java基础之深入认识hashCode和equals
  7. hdu 3879 Base Station 最大权闭合图
  8. ACL2021 知识图谱、推荐系统相关论文
  9. VC中海量文件读写类设计与应用
  10. 如何在vs2017编写java程序_VS2017开发Linux平台上的程序
  11. SAP 后勤实施攻略笔记-生产模式和计划策略
  12. 体育计算机培训心得,体育培训心得体会(精选4篇)
  13. Switch 块、Switch 表达式、Switch 模式匹配,越来越好用的 Switch
  14. 电子面单打印结果通知回调API接口
  15. 市面上最适合跑步用的耳机有哪些、分享五款最优秀的跑步耳机
  16. 团队管理之《十人以下小团队管理手册》
  17. 为什么 JSON 不支持注释?
  18. 实现僵尸跑酷游戏的 UGUI 实践
  19. Android将死,Web OS才是王道——通过Google Chrome OS看Android
  20. 现在流行什么邮箱?职场解读:《你好,李焕英》为什么火了?

热门文章

  1. IKEA(宜家)营销神话——“让用户成为产品的创造者”!
  2. 初学安卓之二维码的简单实现,android开发网上购物app
  3. 基于深度学习的印刷电路板瑕疵识别
  4. 【论文】Mask R-CNN
  5. 微信支付现金红包快速开通
  6. Jackson ImmunoResearch 山羊抗羊驼 IgG说明书
  7. VS2015+caffe+matlab+python+CPU
  8. 修改autor后面邮箱_最后冲刺!2020年国自然标书终极修改和形式审查要点!!!...
  9. [CSDN]我的2013,好久不见
  10. 一个可能的visual studio 的 cl.exe可能的地址