聊一聊Filter

1.什么是过滤器:

     1、过滤器是一个运行在服务器端的程序,先于与之相关的servlet或JSP页面之前运行,实现对请求资源的过滤的功能

     2、过滤器可附加到一个或多个servlet或JSP页面上,可以检查请求信息,也可以处理响应信息。

     3、Filter 的基本功能是对 Servlet 容器调用 Servlet 的过程进行拦截,从而在 Servlet 执行前后实现一些特殊的功能。

2.常用实例:

        自动登录,解决全站乱码,屏蔽非法文字,进行响应数据压缩,等等

3.编写流程:
         1、实现类,需要实现接口 javax.servlet.Filter
public class HelloFilter implement Filter{

      public void init(FilterConfig  filterConfig )throws ServletException{

}

     public void doFilter(ServletRequest request,ServletResponse response, FilterChain chain)throws IOException,ServletException{
    //放行
    chain.diFilter(request,response);
}

      public void destroy(){
}
}

         2、配置,在web.xml使用<filter>和<filter-mapping>进行配置

<!--注册通知tomcat过滤器的实现类-->
<filter>
        <filter-name>自定义过滤器类名</filter-name>
        <filter-class>自定义过滤器类的全路径</filter-class>
</filter>

<!--那些程序使用过滤器>
<filter-mapping>
       <filter-name>已经注册的过滤器类名</filter-name>
       <url-pattern>对那些路经过滤(/*所有)</url-pattern>
</filter-mapping>


4.生命周期:

          4.1、实例化(new) : Web 容器启动时,即会根据 web.xml 中声明的 filter 顺序依次实例化这些 filter

          4.2、初始化:

                4.2.1、实例化和初始化的操作只会在容器启动时执行,而且只会执行一次。

                4.2.2、 Web 容器调用 init(FilterConfig) 来初始化过滤器。

                4.2.3、容器在调用该方法时,向过滤器传递 FilterConfig 对象,

                4.2.4、利用 FilterConfig 对象可以得到 ServletContext 对象,以及在 web.xml 中配置的过滤器的初始化参数

                4.2.5、在这个init(FilterConfig)方法中,可以抛出 ServletException 异常,通知容器该过滤器不能正常工作。

                           此时的 Web 容器启动失败,整个应用程序不能够被访问           

         4.3、过滤:         每次访问被拦截目标资源,过滤器中的doFilter的方法就会执行  

         4.4、销毁:        当服务器关闭(或应用卸载)的时候,服务器就会销毁Filter对象.
5.过滤器链

      过滤器在执行过程中是一个一个过滤器去执行的,其中执行的顺序和<filter-mapping>中配置的顺序有关,

      5.1 : 过滤器的配置

          url-pattern 的配置和servlet中的配置一样

       * 完全路径匹配   以 / 开始   /aaaa/bbbb/cccc

       * 目录匹配         以 / 开始   /*     /aa/*

       * 扩展名匹配      不能以 / 开始   *.do  *.action *.jsp

          servlet-name 配置  通过url-pattern拦截一个Servlet资源 也可以通过servlet-name标签进行拦截

              

          dispatcher  的配置

           *   REQUEST : 默认值

           *   FORWARD: 拦截转发

           *   ERROR :  拦截跳转到错误界面,全局错误界面

           *   INCLUDE : 拦截在一个页面中包含另一个界面





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值