Filter

1  概念:

    当访问服务器的资源时,过滤器可以将请求拦截下来,完成一些特殊的功能

    过滤器的作用:

      一般用于完成通用的操作,如:登录验证、统一编码处理、敏感字符过滤...

2  快速入门:

  1  步骤:

    1  定义一个类,实现接口filter

    2  复写方法

    3  配置拦截路径

      1  web.xml

      2  注解

复制代码
@WebFilter("/*")//访问所有资源之前,都会执行该过滤器
public class filter implements Filter{

    @Override
    public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2)
            throws IOException, ServletException {
        // TODO Auto-generated method stub
        System.out.println("demo1被执行了");
        
        //放行
        arg2.doFilter(arg0, arg1);
        
    }

}
复制代码

 

3  过滤器细节

  1  过滤器执行流程

    1  执行过滤器

    2  执行放行后的资源

    3  回来执行过滤器放行代码下边的代码

  2  过滤器生命周期方法

    1  init:再服务器启动之后,会创建Filter对象,然后调用init方法。只执行一次,用于加载资源

    2  doFilter:每一次请求被拦截时,会执行。执行多次

    3  destroy:在服务器关闭后,Filter对象被销毁。如果服务器是正常关闭,则会执行destroy方法

  3  过滤器配置详解

    1  拦截路径配置:

      1  具体资源路径:   /index.jsp  只有访问index.jsp时,才会被执行

      2  拦截目录:   /user/*    访问/user下的所有资源时,过滤器都会被执行

      3  后缀名拦截:   *.jsp   访问所有后缀名为jsp的资源时,过滤器都会被执行

      4  拦截所有资源   /*

    2  拦截方式配置:资源被访问的方式

      注解配置

        设置dispatcherTypes属性

          1  REQUEST:默认值        浏览器直接请求资源   

             @WebFilter(value="/index.jsp",dispatcherTypes=DispatcherType.REQUEST)                                                          

          2  FORWORD:转发访问资源    

          3  INCLUDE:包含访问资源

          4  ERROR:错误跳转资源

          5  ASYNC:异步访问资源

        web.xml配置

  4  过滤器链(配置多个过滤器)

    执行顺序:如果有两个过滤器:过滤器1和过滤器2

      1  过滤器1

      2  过滤器2

      3  资源执行

      4  过滤器2

      5  过滤器1

    过滤器先后顺序问题:

      1  注解配置:按照类名的字符串比较规则比较,值小的先执行

        如:AFilter和BFilter    AFilter先执行

      2  web.xml配置:谁定义在上面,谁先执行

posted @   Cuora  阅读(84)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
点击右上角即可分享
微信分享提示