【JavaWeb】过滤器的了解与应用

注:本文章基于尚硅谷JavaWeb相关视频及资料进行编写,代码简单,较容易理解,若有问题或者源码资料获取可以在评论区留言或者联系作者!



一、初识过滤器

Filter过滤器是JavaWeb的三大组件之一,三大组件分别是:Servlet程序、LIstener监听器、Filter过滤器;

Filter过滤器是JavaEE的规范,也就是接口;
Filter过滤器它的作用是:拦截请求,过滤响应;

  1. 编写一个过滤器类继承Filter类
  2. 实现过滤方法都Filter()
  3. 在doFilter方法中拦截请求,可以作权限检查
  4. 可以在web.xml中或者直接使用@WebFilter注解进行拦截路径的设置;
WebFilter("/*")
public class Filter1 implements Filter {
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
 
    }
 
    @Override
    public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws IOException, ServletException {
        HttpServletRequest request=(HttpServletRequest) req;
        HttpServletResponse response=(HttpServletResponse) resp;
       if(user=null){//转发
			servletRequest.getRequestDispatcher("/login.jsp").forward(request,response)
			return;
	}
	else{//放行
        chain.doFilter(request,response);
    }
 
    @Override
    public void destroy() {
 
    }
}



二、Filter的生命周期

FIlter的生命周期包含的几个方法:

  1. 构造器方法
  2. Init初始化方法
    第1,2步在web项目启动的时候执行(Filter已创建)
  3. doFilter过滤方法
    每次拦截到请求,就会执行
  4. destory销毁
    停止web工程的时候,就会执行,也会销毁Filter过滤器

FilterConfig类:

FilterConfig类是Filter过滤器的配置文件类。
Tomcat每次创建Filter的时候,也会同时创建一个FilterConfig类,这里包含了FIlter配置文件的配置信息;

FilterConfig类的作用是获取filter过滤器的配置内容:

  1. 获取Filter的名称filter-name的内容
//在init初始化方法中:
filterConfig.getFilterName()
  1. 获取web.xmlr中配置的init-param初始化参数
filterConfig.getInitParameter(web.xml中的init-name名称)
  1. 获取ServletContext对象
filterConfig.getServletContext()

三、FilterChain过滤器链

FilterChain,就是过滤器链(多个过滤器链如何一起工作)
FilterChain.doFilter()方法的作用:

  1. 执行下一个Filter过滤器(如果有Filter过滤器)
  2. 执行目标资源(如果没有Filter)

在多个Filter过滤器执行的时候,他们的执行顺序是按他们在web.xml文件中从上到下的配置的顺序来决定的;

多个Filter过滤器执行的特点:

1. 所有的FIlter和目标资源默认都执行在同一线程中
2. 多个Filter共同执行的时候,它们都使用同一个Request对象

Filter的拦截路径:

  • 精确匹配
    <url-pattern>/target.jsp</url-pattern>
    以上配置的路径,表示请求地址必须为:http://ip:port/工程路径/target.jsp

  • 目录匹配
    <url-pattern>/admin/*</url-pattern>
    以上配置的路径,表示请求的地址必须为http:ip/port/工程路径/admin/*

  • 后缀名匹配
    <url-pattern>*.html</url-pattern>
    以上配置的路径,表示请求地址必须以.html结尾才能拦截到

注意:Filter只关心请求的地址是否匹配,而不关心请求的资源是否存在;


如果感觉内容写的还不错的话,一键三连不迷路!!!!
后面将会更新更多学习内容,一起学习吧!!!!!!
在这里插入图片描述

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

PoJo123

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值