zoukankan      html  css  js  c++  java
  • web.xml相关知识摘录整理

    web.xml 中的listener、 filter、servlet 加载顺序及其详解

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

            首先可以肯定的是,加载顺序与它们在 web.xml 文件中的先后顺序无关。即不会因为 filter 写在 listener 的前面而会先加载 filter。最终得出的结论是:listener -> filter -> servlet

            同时还存在着这样一种配置节:context-param,它用于向 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() 方法的。

           servlet 同 filter 类似 ,此处不再赘述。

           由此,可以看出,web.xml 的加载顺序是:context-param -> listener -> filter -> servlet ,而同个类型之间的实际程序调用的时候的顺序是根据对应的 mapping 的顺序进行调用的。

    web.xml中listener作用及使用

    WebContextLoaderListener 监听类

    它能捕捉到服务器的启动和停止,在启动和停止触发里面的方法做相应的操作!

    它必须在web.xml 中配置才能使用,是配置监听类的

    监听器也叫Listener,是Servlet的监听器,它可以监听客户端的请求、服务端的操作等。通过监听器,可以自动激发一些操作,比如监听在线的用户的数量。当增加一个HttpSession时,就激发sessionCreated(HttpSessionEvent   se)方法,这样就可以给在线人数加1。常用的监听接口有以下几个:

    ServletContextAttributeListener监听对ServletContext属性的操作,比如增加、删除、修改属性。

    ServletContextListener监听ServletContext。当创建ServletContext时,激发 contextInitialized(ServletContextEvent   sce)方法;当销毁ServletContext时,激发contextDestroyed(ServletContextEvent sce)方法。

    HttpSessionListener监听HttpSession的操作。当创建一个Session时,激发session   Created(HttpSessionEvent   se)方法;当销毁一个Session时,激发essionDestroyed (HttpSessionEvent se)方法。

    HttpSessionAttributeListener监听HttpSession中的属性的操作。当在Session增加一个属性时,激发 attributeAdded(HttpSessionBindingEvent se)方法;当在Session删除一个属性时,激发attributeRemoved(HttpSessionBindingEvent   se)方法;当在Session属性被重新设置时,激发attributeReplaced(HttpSessionBindingEvent se)   方法。

  • 相关阅读:
    《完结篇》论文笔记
    《QD超市管理系统的设计与实现》论文笔记(十九)
    《基于JSP的超市管理系统设计与实现》论文笔记(十八)
    《B/S模式下ADO.NET数据库访问技术的设计及应用》论文笔记(十七)
    《基于B/S中小型超市进销存管理系统的研究与设计》论文笔记(十六)
    《基于Web的Git可视化设计与实现》论文笔记(十五)
    《小型超市商品管理系统的设计与实现》论文笔记(十四)
    《超市商品管理系统的设计与实现》论文笔记(十三)
    《中小连锁超市管理系统的设计与实现》论文笔记(十二)
    laravels安装horizon和Supervisor
  • 原文地址:https://www.cnblogs.com/otio/p/4158889.html
Copyright © 2011-2022 走看看