`
Treey2012
  • 浏览: 8524 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

web.xml之context-param,listener,filter,servlet加载顺序及其周边

 
阅读更多

先以加载spring为例子看看加载顺序的作用:

Spring加载可以利用ServletContextListener实现,也可以采用load-on-startup Servlet实现,但比如filter需要用到bean,但加载顺序是:先加载filter后加载spring,则filter中初始化操作中的bean为null;所以,如果过滤器中要使用到bean,此时就可以根据加载顺序listener>filter>servlet,将spring的加载改成Listener的方式。

利用ServletContextListener实现:

采用load-on-startup Servlet实现:

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

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

首先是<context-param>,启动一个WEB项目的时候,WEB容器会去读取它的配置文件web.xml,读取<listener>和<context-param>两个结点,它用于向ServletContext提供键值对,即应用程序上下文信息。例如我们的listener, filter等在初始化时会用到这些上下文中的信息。

例如:在监听中会有contextInitialized(ServletContextEvent args)初始化方法,在这个方法中获得:

ServletContext = ServletContextEvent.getServletContext();

context-param的值= ServletContext.getInitParameter("context-param的键");

ServletContext = ServletContextEvent.getServletContext();

context-param的值= ServletContext.getInitParameter("context-param的键");

它包含两个子元素:param-name,param-value,

前者用来设置context的名字,后者用来设置其值。例如

当param-value有多个值时,可以用空格或逗号隔开,或通配符

其次是listener, listener元素用来定义Listener接口,它的主要子元素为< listener-class>

< listen-class>Listener的类名称< /listener-class>定义Listener的类名称.例如: com.foo.hello

范例:


接着是filter

filter元素用来声明filter的相关设定.filter元素除了下面介绍的的子元素之外,还包括< icon>,< display-name> ,< description>,< init-param>,其用途一样.

< filter-name>Filter的名称< /filter-name>定义Filter的名称.

< filter-class>Filter的类名称< /filter-class>定义Filter的类名称.例如:com.foo.hello

< filter-mapping>

filter-mapping元素的两个主要子元素filter-name和url-pattern.用来定义Filter所对应的URL.

< filter-name>Filter的名称< /filter-name>定义Filter的名称.

< url-pattern>URL< /url-pattern>Filter所对应的RUL.

例如:< url-pattern>/Filter/Hello< /url-pattern>

< servlet-name>Servlet的名称< servlet-name>定义servlet的名称.

< dispatcher>REQUEST|INCLUDE|FORWARD|ERROR< /disaptcher>设定Filter对应的请求方式,有RQUEST,INCLUDE,FORWAR,ERROR四种,默认为REQUEST.

范例:

对于某类配置节而言,与它们出现的顺序是有关的。以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

<servlet></servlet>用来声明一个servlet的数据,主要有以下子元素:

<servlet-name></servlet-name>指定servlet的名称

<servlet-class></servlet-class>指定servlet的类名称

<jsp-file></jsp-file>指定web站台中的某个JSP网页的完整路径

<init-param></init-param>用来定义参数,可有多个init-param。在servlet类中通过getInitParamenter(String name)方法访问初始化参数

<load-on-startup></load-on-startup>指定当Web应用启动时,装载Servlet的次序。

<servlet-mapping></servlet-mapping>服务器一般为servlet提供一个缺省的URL:http://host/webAppPrefix/servlet/ServletName。

但是,常常会更改这个URL,以便servlet可以访问初始化参数或更容易地处理相对URL。在更改缺省URL时,使用servlet-mapping元素。

用来定义servlet所对应的URL,包含两个子元素

<servlet-name></servlet-name>指定servlet的名称

<url-pattern></url-pattern>指定servlet所对应的URL

其中的<load-on-startup></load-on-startup>当值为正数或零时:Servlet容器先加载数值小的servlet,再依次加载其他数值大的servlet.当值为负或未定义:Servlet容器将在Web客户首次访问这个servlet时加载它.

分享到:
评论

相关推荐

    JSPservlet中web.xml详细配置指南(包含所有情况)

    本文将对 web.xml 的配置进行详细的解释,包括加载顺序、context-param、listener、filter、servlet 等配置节的使用和顺序。 加载顺序 ---------- 加载顺序是指 web.xml 文件中的元素出现的顺序,它对 Web 应用...

    Tomcat中用web.xml控制Web应用详解

    web.xml 文件的加载顺序是:context-param -&gt; listener -&gt; filter -&gt; servlet。在这个顺序中,context-param 元素将被首先加载,然后是 listener 元素,接着是 filter 元素,最后是 servlet 元素。 结论 web.xml ...

    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. ...

    J2EE中关于web.xml文件的配置

    9. `&lt;servlet-mapping&gt;`:servlet-mapping 元素用于将 Servlet 映射到一个 URL。 10. `&lt;session-config&gt;`:session-config 元素用于指定会话超时值。 11. `&lt;mime-mapping&gt;`:mime-mapping 元素用于指定特殊文件的 ...

    Web.xml配置文件[文].pdf

    Web.xml配置文件是Java Web应用程序的核心配置文件之一,它用于定义Web应用程序的各种配置信息和参数。本文将对Web.xml配置文件的各个元素进行详细的解释和分析。 1. `&lt;web-app&gt;`元素 `&lt;web-app&gt;`元素是Web.xml配置...

    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....

    web.xml标签说明.docx

    5. `&lt;context-param&gt;` 元素:用于声明 Web 应用程序 Servlet 上下文的初始化参数。他包含两个子元素 `&lt;param-name&gt;` 和 `&lt;param-value&gt;`。 `&lt;param-name&gt;` 用于指定参数的名字, `&lt;param-value&gt;` 用于指定参数的值。...

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

    7.4.2 [servlet-mapping]元素及其子元素 249 7.5 一个实例 250 7.6 小结 253 第8章 数据库访问 254 8.1 驱动程序的类型 254 8.1.1 jdbc-odbc桥 254 8.1.2 部分本地api java驱动程序 255 8.1.3 jdbc网络纯java...

    webxml文件详解[借鉴].pdf

    Web.xml 文件详解 Web.xml 文件是 Java Web 应用程序的部署描述符文件,用于描述 Web 应用程序的结构和配置。该文件必须以 XML 头开始,声明使用的 XML 版本和字符编码。 DOCTYPE 声明必须立即出现在 XML 头之后,...

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

    7.4.2 [servlet-mapping]元素及其子元素 249 7.5 一个实例 250 7.6 小结 253 第8章 数据库访问 254 8.1 驱动程序的类型 254 8.1.1 jdbc-odbc桥 254 8.1.2 部分本地api java驱动程序 255 8.1.3 jdbc网络纯java...

    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 注解处理 .............................................

    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...

    基于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;/...

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

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

    JSF文件上传

    &lt;servlet-class&gt;javax.faces.webapp.FacesServlet&lt;/servlet-class&gt; &lt;load-on-startup&gt;1&lt;/load-on-startup&gt; &lt;/servlet&gt; &lt;!-- Faces Servlet Mapping --&gt; &lt;servlet-mapping&gt; &lt;servlet-name&gt;Faces ...

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

    7.4.2 [servlet-mapping]元素及其子元素 249 7.5 一个实例 250 7.6 小结 253 第8章 数据库访问 254 8.1 驱动程序的类型 254 8.1.1 jdbc-odbc桥 254 8.1.2 部分本地api java驱动程序 255 8.1.3 jdbc网络纯java...

    Servlet3.1规范(最终版) PDF

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

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

    7.4.2 [servlet-mapping]元素及其子元素 249 7.5 一个实例 250 7.6 小结 253 第8章 数据库访问 254 8.1 驱动程序的类型 254 8.1.1 jdbc-odbc桥 254 8.1.2 部分本地api java驱动程序 255 8.1.3 jdbc网络纯java...

    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 ...

Global site tag (gtag.js) - Google Analytics