Web - 过滤器Filter & 监听器Listener

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_42986107/article/details/83214053

一、过滤器Filter

filter运行在servlet和jsp之前 , 对客户端访问的资源进行过滤.
       符合条件放行 , 不符合条件不放行 .(使用FilterChain.doFilter方法放行!)

1.filter的写法.

首先需编写一个类 , 实现filter接口 , 实现doFilter()方法.
1.配置文件的写法: 在web.xml中进行配置.

<filter>     
      <filter‐name>MyFilter1</filter‐name>     
      <filter‐class>类的全限定名</filter‐class> 
</filter> 
<filter‐mapping>     
      <filter‐name>MyFilter1</filter‐name>     
      <url‐pattern>映射路径</url‐pattern> 
</filter‐mapping>

2.注解方式: 类上加注解 @WebFilter(“映射路径”)
 
注: doFile方法默认拦截请求,如过滤之后,需要继续访问资源,用FilterChain放行.
      底层执行了 servlet的servie方法.

2.映射路径.

1.完全匹配: /servlet1
                  只有访问的地址是servlet1 , 才执行该过滤器.
2.目录匹配: /a/b/* (重点)
                  当访问的目标资源的地址是/a/b/任何资源 , 都执行该过滤器.
3.扩展名匹配: *.jsp
                  访问的目标资源是.jsp时 , 才执行该过滤器.

3.filter的生命周期.

  • init(): Filter对象创建时, 立即执行.
  • doFilter(): filter执行过滤的核心方法.
  • destory(): filter对象销毁前执行destory方法.
     

filter对象的生命周期:
       创建: 服务器启动的时候.
       销毁: 服务器关闭的时候.
       执行过滤: 请求的路径满足过滤器的配置路径 , 执行一次过滤器的doFilter方法.

4.FilterChain过滤器链.

过滤器链:
       多个过滤器组成的一个整体.(只有所有的过滤器都对请求进行了放行,请求才能访问到目标资源,只要多个过滤器中只有一个过滤器不放行 请求,那么这个请求都不能够访问到目标资源。)
在这里插入图片描述
 
执行顺序:
      1.配置文件: 取决于filter-mapping的顺序(越靠前 , 越先执行.)
      2.注解配置: 取决于filter的类名称的字母顺序.

5.配置全局错误页面.

错误页面: 用来兜底 , 当发生错误的时候 , 自动以一个好看的错误页面显示给用户.
<error-page>
        <error-code>404</error-code>       
        <!-- jsp里面可以设置好看的页面. -->
        <location>/404.jsp</location>
</error-page>

二、监听器Listener

监听器: 监听某个对象的状态变化的组件.
 
事件源: 被监听的对象 , 3个域对象(request,session,servletCotnext)
监听器: 监听事件源对象(状态的变化)
响应行为: 监听器监听到事件源的状态变化时,所涉及的功能代码.

1.ServletContextListener监听器:

                                                      :用于监听ServletContext域的创建与销毁的监听器.

2.ServletContext域的生命周期

创建: 服务器启动时创建.
销毁: 服务器关闭时销毁.
作用范围: 整个web应用.

3.监听器的编写步骤:

1.编写一个监听器类实现监听器接口ServletContextListener.
2.重写监听器的方法.
3.在web.xml中进行配置. 或使用注解配置: @WebListener .

<listener> 
     <listener-class> 全限定名 </listener-class> 
</listener> 

猜你喜欢

转载自blog.csdn.net/qq_42986107/article/details/83214053