第十一次课后作业

一、登录校验--Filter详细执行过程(拦截路径)

demoFilter

import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import java.io.IOException;

@WebFilter(urlPatterns = "/*")
public class DemoFilter implements Filter {
    @Override//初始化,只调用一次
    public void init(FilterConfig filterConfig) throws ServletException {
        Filter.super.init(filterConfig);
        System.out.println("init进行了初始化");
    }

    @Override//拦截到请求之后的调用,调用多次
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        System.out.println("demo拦截到了请求--放行前的逻辑");
        filterChain.doFilter(servletRequest,servletResponse);
        System.out.println("demo拦截到了放行后的逻辑");
    }

    @Override//销毁方法,只调用一次
    public void destroy() {
        Filter.super.destroy();
    }
}

在启动类中添加@ServletComponentScan注解

@ServletComponentScan//开启了对servlet组件的支持
@SpringBootApplication
public class DdWebManagementApplication {
    public static void main(String[] args) {
        SpringApplication.run(DdWebManagementApplication.class, args);
    }
}

在postman的运行后,控制台输出的结果

1

拦截路径urlPatterns值含义
拦截具体路径/login只有访问/login路径时,才会被拦截
目录拦截/emps/*访问/emps下的所有资源,都会被拦截
拦截所有/*访问所有资源,都会被拦截

二、登录校验--Filter详细执行过程(过滤器链)

新建一个新的过滤器abcFilter:

@WebFilter(urlPatterns = "/*")
public class abcFilter implements Filter {
    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        System.out.println("abc拦截到了请求--放行前的逻辑");
        filterChain.doFilter(servletRequest,servletResponse);
        System.out.println("abc拦截到了放行后的逻辑");
    }
}

可以看到结果是先执行了abcFilter,然后再执行的demoFilter,这是因为注解配置的Filter,优先级是按照过滤器类名的自然排序。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值