Servlet、Filter、Listener小结

ServletFilterListener
实现类继承 HttpServlet 类实现 Filter 接口根据需要实现十个接口中的某几个
初始化默认情况是在第一次使用时初始化
可以通过配置 web.xml 文件来实现服务器启动时初始化
Web容器启动时初始化Web容器启动时初始化
和<url-pattern>的关系一对多
一个 Servlet 可以对应多个 url
多对多不需要配置

  Servlet/Filter/Listener 的加载顺序:

  1. 启动 Web 项目,Tomcat 的 JVM 读取 web.xml 文件创建 Web 容器。
  2. Web 容器加载 web.xml 配置文件中<context-param></context-param><listener></listener>
  3. Web 容器创建一个 ServletContext 实例,整个 Web 项目所有部分都共享给这个容器实例(JSP 中的 application)
  4. Web 容器将<context-param></context-param>中的 name 和 value 的标签值转化成键值对的形式交给 ServletContext 对象
  5. 容器按照配置文件顺序加载 Listener
  6. 容器加载 Filter
  7. 容器加载 web.xml 中 <load-onstartup>标签配置为大于等于0的 Servlet
  8. 在容器销毁时,按照 Servlet → Filter → Listener 的顺序销毁。

  加载顺序 context-param → Listener → Filter → Servlet,这个顺序不会因为配置位置而改变,也就是说,即使 Servlet 配置在 Listener 之前,依旧是先加载 Listener
  而对于同样是 Filter 来说,配置在前面的会先加载;对于同样是 Servlet 来说,<load-on-starup>配置的值是非负数时,数字越小,越优先加载;如果没有配置,或者配置的是负数,那么只有在 Servlet 被请求时,才会加载

Servlet

  1. Servlet 线程不安全
  2. 一个 Servlet 实现类只能有一个实例
  3. 一个 Servlet 可以对应多个 url-pattern

Filter

  1. 多个 Filter 组成一个 FilterChain
  2. 多个Filter的执行有先后顺序,规则是在<filter-mapping>中,配置在前面的 Filter 执行要早于配置在后面的 Filter。
  3. Filter 和 url-pattern 可以是多对多的关系
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值