Filter过滤器(新手学习日记)

概念:Fileter过滤器,是JavaWeb三大组件(Servlet Filter Listener)之一

过滤器可以把对资源的请求拦截下来,从而实现一些特殊的功能

过滤器一般完成一些通用的操作,比如:登录校验,统一编码处理,敏感字符处理等

实现 :

      1. 定义Filter : 定义一个类 , 实现 Filter 接口 ,并重写其所有方法
      2. 配置Filter : Filter 类上加 @WebFilter 注解 , 配置拦截资源的路径 . 引导类上 加@ServletComponentScan 开启Servlet 组件支持

Filter 接口:

重写3个方法:

init方法 : 初始化方法,只能被执行一次

doFilter方法 : 每次拦截请到请求,都会执行,可以执行多次(该方法必须重写 )

destroy方法 : 销毁方法,只能被执行一次

放行:

调用doFilter方法中的chain对象的doFilter方法(形参为请求头和请求体)可以将指定请求放行

@WebFilter public class TestFilter implements Filter { @Override public void init(FilterConfig filterConfig) throws ServletException { System.out.println("初始化方法,只执行一次"); } @Override public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse , FilterChain filterChain) throws IOException, ServletException { System.out.println("拦截方法,每次请求时都会执行"); //放行 形参 : 请求对象 和 响应对象 filterChain.doFilter(servletRequest, servletResponse); } @Override public void destroy() { System.out.println("销毁方法,服务器关闭时调用只执行一次"); } }

 

注意事项:

@WebFilter的 value属性和urlPatterns属性是完全等价的

@WebFilter("/*|)代表拦截所有请求

在启动类上添加@ServletComponentScan注释(作用: 开启servlet组件)

Filter 类上加 @WebFilter 注解

导包是导的servlet包下的

执行流程:

放行后,开始访问Web资源,得到响应再回到doFile,

@Override public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { System.out.println("拦截方法,每次请求时都会执行 ------放行前逻辑"); //放行 形参 : 请求对象 和 响应对象 filterChain.doFilter(servletRequest, servletResponse); System.out.println("拦截方法,每次请求时都会执行 ------放行后逻辑"); }

Filter拦截路径

Filter 可以根据需求,配置不同的拦截资源路径

拦截路径

urlPatterns

含义

拦截具体路径

/login

只有访问/login路径时,才会被拦截

目录拦截

/emps/*

访问/emps下的所有资源,都会被拦截

拦截所有

/*

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

过滤器链:

一个web应用中,配置了多个过滤器,就形成了一个过滤器链

注意事项:

过滤器的顺序: 优先级是按照过滤类名(字符串)的自然排序(Ascll码)

  • 7
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值