`

web.xml之context-param,listener,filter, servlet启动顺序和讲解

 
阅读更多
首先可以确定的一点是, 不同类型节点的加载顺序与它们在web.xml里出现的次序无关,即不会因为filter写在listener之前而先加载fiter.

    就<context-param>、<listener>、<filter>、<servlet>四种节点而言,启动服务器时的加载顺序是context-param --> listener --> filter --> servlet

    首先是<context-param>,启动一个WEB项目的时候,WEB容器会读取配置描述符文件(web.xml)中的<context-param>节点信息。<context-param>它用于向 ServletContext 提供键值对,即应用程序上下文信息。在初始化listener, filter和servlet时到可能会用到这些信息。

    例如在监听器(listener)中有一个contextInitialized(ServletContextEvent contextEvent)初始化方法,在这个方法中可以通过  contextEvent .getServletContext() 可以获得ServletContext对象,然后再从ServletContext中通过getInitParameter(String)方法获取<context-param>的键值:

1
ServletContext servletContext = contextEvent.getServletContext();
2

3
Object context-param的值 = servletContext .getInitParameter("context-param的键");
    <context-param>包含两个子元素,分别是<param-name>和<param-value>。 前者用来设置context的名字,后者用来设置其值。

    当param-value有多个值时, 用逗号隔开。 <param-value>里也可以使用通配符,比如:


1
<strong> <context-param>
2
       <param-name>contextConfigLocation</param-name>
3
       <param-value>
4
           classpath*:/applicationContext.xml,classpath*:/applicationContext-security.xml
5
       </param-value>
6
</context-param> </strong>



    接着初始化listener, 主要子元素为< listener-class>,如:


1
<listener>
2
    <listener-class>
3
        org.springframework.web.context.ContextLoaderListener
4
    </listener-class>
5
</listener>
   

    然后是filter。 filter元素主要包括<filter-name>,<filter-class>和<init-param>, 一个典型的<filter>节点声明如下:


1
<filter>
2
    <filter-name>Cache Filter - Friendly</filter-name>
3
    <filter-class>com.liferay.portal.servlet.filters.cache.CacheFilter</filter-class>
4
    <init-param>
5
        <param-name>pattern</param-name>
6
        <param-value>0</param-value>
7
    </init-param>
8
</filter>
filter-mapping用来定义filter所对应的url匹配模式,它有两个子元素,分别是<filter-name>和<url-pattern>,一个典型的<filter-mapping>节点如下:


1
<filter-mapping>
2
    <filter-name>Cache Filter - Layout</filter-name>
3
    <url-pattern>/c/portal/layout</url-pattern>
4
</filter-mapping>
注意: 对于同一类型的配置节而言,与它们出现的顺序是有关的。以<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一样,servlet也分<servlet>和<servlet-mapping>两部分声明。一个典型的servlet声明如下:


01
<servlet>
02
    <servlet-name>Friendly URL Servlet - Private User</servlet-name>
03
    <servlet-class>com.liferay.portal.servlet.FriendlyURLServlet</servlet-class>
04
    <init-param>
05
        <param-name>user</param-name>
06
        <param-value>true</param-value>
07
    </init-param>
08
    <load-on-startup>2</load-on-startup>
09
</servlet>
10
<servlet-mapping>
11
        <servlet-name>Friendly URL Servlet - Private User</servlet-name>
12
        <url-pattern>/user/*</url-pattern>
13
</servlet-mapping>
 
其中的<load-on-startup>值为正数或零时:Servlet容器先加载数值小的servlet,再依次加载其他数值大的servlet. 当值为负或未定义:Servlet容器将在Web客户首次访问这个servlet时加载它.
分享到:
评论

相关推荐

    web.xml详解(web-app_2_3.dtd)

    部署描述文件web.xml详解(web-app_2_3.dtd),全面介绍: 1. icon元素 2. display-name元素 3. description元素 4. distributable元素 5. context-param元素 6. filter元素 7. filter-mapping元素 8. ...

    Spring MVC 框架应用实例

    org.springframework.web.context.ContextLoaderListener &lt;/listener-class&gt; &lt;/listener&gt; &lt;filter&gt; &lt;filter-name&gt;encodingFilter&lt;/filter-name&gt; &lt;filter-class&gt; org.springframework.web.filter....

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part3

    本书共分4部分,从xml、servlet、jsp和应用的角度向读者展示了java web开发中各种技术的应用,循序渐进地引导读者快速掌握java web开发。.  本书内容全面,涵盖了从事java web开发所应掌握的所有知识。在知识的讲解...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part2

    本书共分4部分,从xml、servlet、jsp和应用的角度向读者展示了java web开发中各种技术的应用,循序渐进地引导读者快速掌握java web开发。.  本书内容全面,涵盖了从事java web开发所应掌握的所有知识。在知识的讲解...

    SSH第7章上机.zip ACCP8.0

    org.springframework.web.servlet-3.1.3.RELEASE.jar org.springframework.web.struts-3.1.3.RELEASE.jar 加入struts的配置文件struts.xml 在web.xml中配置struts &lt;filter&gt; &lt;filter-name&gt;struts2&lt;/filter-name&gt; ...

    Java™ Servlet 规范.

    1.6.1 监听器(Listener)顺序 ...............................................................................................................14 1.6.2 注解处理 .............................................

    ssh(structs,spring,hibernate)框架中的上传下载

     本文后面的章节将从数据持久层->业务层->Web层的开发顺序,逐层讲解文件上传下载的开发过程。  数据持久层  1、领域对象及映射文件  您可以使用Hibernate Middlegen、HIbernate Tools、Hibernate ...

    Spring MVC 入门实例

    36 &lt;servlet-class&gt;org.springframework.web.servlet.DispatcherServlet&lt;/servlet-class&gt; 37 &lt;load-on-startup&gt;1&lt;/load-on-startup&gt; 38 &lt;/servlet&gt; 39 40 &lt;servlet-mapping&gt; 41 &lt;servlet-name&gt;ideawu&lt;/servlet-name...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part4

    本书共分4部分,从xml、servlet、jsp和应用的角度向读者展示了java web开发中各种技术的应用,循序渐进地引导读者快速掌握java web开发。.  本书内容全面,涵盖了从事java web开发所应掌握的所有知识。在知识的讲解...

    基于MyEclipse搭建maven+springmvc整合图文教程(含源码0

    &lt;servlet-class&gt;org.springframework.web.servlet.DispatcherServlet&lt;/servlet-class&gt; &lt;init-param&gt; &lt;param-name&gt;contextConfigLocation&lt;/param-name&gt; &lt;param-value&gt;/WEB-INF/dispatcher-servlet.xml&lt;/...

    JSF文件上传

    —要和&lt;servlet-mapping&gt;中的&lt;servlet-name&gt;一致--&gt; &lt;servlet-name&gt;Faces Servlet&lt;/servlet-name&gt; &lt;/filter-mapping&gt; &lt;welcome-file-list&gt; &lt;welcome-file&gt;index.html&lt;/welcome-file&gt; &lt;/welcome-file-list&gt; ...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part5

    本书共分4部分,从xml、servlet、jsp和应用的角度向读者展示了java web开发中各种技术的应用,循序渐进地引导读者快速掌握java web开发。.  本书内容全面,涵盖了从事java web开发所应掌握的所有知识。在知识的讲解...

    Servlet3.1规范(最终版) PDF

    1.6.1 监听器(Listener)顺序 ...............................................................................................................14 1.6.2 注解处理 ...............................................

    Servlets和JSP核心技术 卷2(英文版) 第一部分

    Servlets和JSP核心技术 卷2 内容还是很详细的,看过卷1的人可以继续用这本书深造,呵呵 目录: Chapter 1. Using and Deploying Web Applications Section 1.1. Purpose of Web Applications Section 1.2. ...

    Servlets和JSP核心技术 卷2(英文版) 第二部分

    Controlling Web Application Behavior with web.xml Section 2.1. Purpose of the Deployment Descriptor Section 2.2. Defining the Header and the Root Element Section 2.3. The Elements of web.xml ...

    JavaEE 5.0 Tutorial.pdf

    XML .............................................................................................................................................. 51 SOAP Transport Protocol .............................

Global site tag (gtag.js) - Google Analytics