• 过滤器(Filter)入门


    概述

    Filter 表示过滤器,是 JavaWeb 三大组件(Servlet、Filter、Listener)之一.过滤器可以把对资源的请求拦截下来,从而实现一些特殊的功能。

    过滤器一般完成一些通用的操作。比如每个资源都要写一些代码完成某个功能,我们总不能在每个资源中写这样的代码吧, 而此时我们可以将这些代码写在过滤器中,因为请求每一个资源都要经过过滤器。

    创建第一个Filter

    定义类,实现 Filter接口,并重写其所有方法 ,配置Filter拦截资源的路径:在类上定义 @WebFilter 注解。而注解的 value 属性值 /* 表示拦截所有的资源。在doFilter方法中输出一句话,并放行

    1. package com.chen.filter;
    2. import javax.servlet.*;
    3. import javax.servlet.annotation.WebFilter;
    4. import java.io.IOException;
    5. @WebFilter("/*")
    6. public class FilterDemo implements Filter {
    7. @Override
    8. public void init(FilterConfig filterConfig) throws ServletException {
    9. }
    10. @Override
    11. public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
    12. System.out.println("放行前逻辑被执行");
    13. //放行前一般对request进行处理
    14. filterChain.doFilter(servletRequest,servletResponse);//放行
    15. System.out.println("放行后逻辑被执行");
    16. //放行后对request进行处理
    17. }
    18. @Override
    19. public void destroy() {
    20. }
    21. }

    执行流程

     

    放行后访问对应资源,资源访问完成后,还会回到Filter中吗?

    从上图就可以看出肯定 会 回到Filter中

    如果回到Filter中,是重头执行还是执行放行后的逻辑呢?

    如果是重头执行的话,就意味着 放行前逻辑 会被执行两次,肯定不会这样设计了;所以访问完资源后,会回到 放行后逻 辑 ,执行该部分代码。

    过滤器拦截路径的配置

    Filter拦截路径配置 拦截路径表示 Filter 会对请求的哪些资源进行拦截,使用 @WebFilter 注解进行配置。如: @WebFilter("拦截路径") 拦截路径有如下四种配置方式:

    拦截具体的资源:/index.jsp:只有访问index.jsp时才会被拦截

    目录拦截:/user/*:访问/user下的所有资源,都会被拦截

    后缀名拦截:*.jsp:访问后缀名为jsp的资源,都会被拦截

    拦截所有:/*:访问所有资源,都会被拦截

    拦截路径的配置方式和 Servlet 的请求资源路径配置方式一样,但是表示的含义不 同。

    过滤器链

    过滤器链是指在一个Web应用,可以配置多个过滤器,这多个过滤器称为过滤器链。

     注解配置的filter,执行的顺序,是按类名的排序顺序。比如的过滤器类名为A,那一定会比类名为B的过滤器执行的要先

  • 相关阅读:
    go调用 c++中数组指针相关
    FFmpeg直播能力更新计划与新版本发布
    Java开发中遇到最难的问题,轻松获得一线大厂面试offer
    python经典百题之求奇数个数
    React路由与导航
    苦涩中的清香
    .Net+Vue3实现数据简易导入功能
    Bug的严重等级和优先级别与分类
    Nanoprobes丨Nanogold®-抗体和链霉亲和素偶联物
    【湖科大教书匠】计算机网络随堂笔记第6章(计算机网络应用层)
  • 原文地址:https://blog.csdn.net/m0_64365315/article/details/127769243