Servlet规范中的过滤器

简介

在请求到达目标资源之前先对请求进行拦截过滤,对请求进行一些处理;也可以在响应到达客户端之前先对相应进行拦截过滤,对响应做出一些处理
在这里插入图片描述

生命周期

在这里插入图片描述

实现

  • 在doFilter中对请求和响应进行处理,不过处理后得调用filterChain的doFilter方法,将请求放行到下一个资源。
  • Filter在应用启动的时候就会创建并且初始化,是单例多线程的
  • Filter也可以对要访问的servlet进行拦截,
@WebFilter("/*",servletNames = {})
public class someFilter implements Filter {
    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        System.out.println("此时请求被拦截在了过滤器中,对请求进行处理");
        // 要把请求传到服务器需要调用chain.doFilter,将请求放行到下一个资源
        filterChain.doFilter(servletRequest,servletResponse);
        System.out.println("在chain,doFilter之后对响应进行处理");
    }

    //Filter在应用启动时就创建并初始化,是单例多线程的
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {

    }

    @Override
    public void destroy() {

    }
}

filterConfig可以获取到的信息
在这里插入图片描述

dispatherTypes标签

dispatherType可选值
在这里插入图片描述

@WebFilter(value = "/*",dispatcherTypes = DispatcherType.FORWARD)

例如选择了DispatcherType.FORWARD之后,Filter只对请求转发进行过滤,不再对其他不符合的请求过滤了。
在这里插入图片描述
默认是request,只拦截普通请求
error是当跳转到指定的错误处理页面时,这个跳转请求会被过滤器拦截

url-partern

  • */是对全路径进行匹配
  • / 是只对静态资源进行拦截,而不会拦截动态资源
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值