在java web项目启动时,容器会读取配置文件web.xml,加载顺序与web.xml中内容的先后顺序无关。配置文件加载的先后顺序为:
①<context-param>,②<listener>,③<filter>,④<servlet>.
1、web项目启动时,首先读取配置文件中的<listener>和<context-param>两个节点
<context-param>元素包含web应用servlet上下文初始化参数的声明。
<listener>元素用来注册一个监听器类。事件监听程序在①应用的启动和关闭;②session的创建与销毁,属性的新增、移除和更改;③对象被绑定到session中或从session中删除;时得到通知。
2、容器创建ServletContext,将<context-param>转化为键值对,并交给ServletContext
3、容器创建<listener>中的类实例
web.xml的模式文件由Sun公司定义,在文件根元素<web-app>中须注明文件使用的哪个模式文件。
<display-name>:指定web应用程序显示的名字,这个名字可以通过GUI tools显示
<context-param>:包含web应用servlet上下文初始化参数的声明。listener、filter等在初始化时可以使用这些上下文信息。在servlet中可以通过getServletContext().getInitParameter("context/param")方法获取参数的值
<listener>:用来注册一个监听器类。事件监听程序在①应用的启动和关闭;②session的创建与销毁,属性的新增、移除和更改;③对象被绑定到session中或从session中 删除;时得到通知。
//TODO:三种listener
<servlet>:声明一个Servlet数据。它的子元素:
Element Required/Optional Description <icon> Optional 指出IDE和GUI工具用来表示web应用的大图标和小图标 <servlet-name> Required servlet的标准名称,用于在部署描述块的其它地方 <display-name> Optional GUI工具显示的简短名字 <description> Optional servlet的描述 <servlet-class> Required(或<jsp-file>) servlet的完全限定类名 <jsp-file> Required jsp文件在web应用中相对于web应用根目录的完整路径 <init-param> Optional 包含一个键值对作为servlet的初始化属性,<init-param>可以有多个 <load-on-startup> Optional 服务器启动时,服务器初始化servlet的时间。当值为正数或0时,servlet容器先加载数值小的servlet;当值为负数或未定义时,servlet容器会在应用启动期间以任意次序加载(首次访问这个servlet时)
<servlet-mapping>:servlet和url的映射。子元素:
Element Required/Optional Description <servlet-name> Required <url-pattern> Required
<filter>:定义一个filter类及它的初始化属性。子元素:
Element Required/Optional Description <icon> Optional <filter-name> Required <display-name> Optional <description> Optional <filter-class> Required <init-param> Optional<filter-mapping>:filter和url的映射。子元素:
Element Required/Optional Description <filter-name> Required <url-pattern> Required - or map by <servlet> <servlet-name> Required - or map by <url-pattern><session-config>:定义web应用的session属性。子元素:
Element Required/Optional Description <session-timeout> Optional session失效时间,单位为分钟<welcome-file-list>:包含一个<welcome-file>的列表。当请求的url是一个目录名还不是文件名时,使用第一个<welcome-file>中的文件,若不存在,使用第二个<welcome-file>中的文件。子元素:
Element Required/Optional Description <welcome-file> Optional用做默认的welcome file的文件名,例如index.html
<jsp-config>://TODO