javaweb12-统一拦截(过滤器和拦截器)

一、统一拦截

拦截住所有的请求,看是否合法。是否携带合法的jwt令牌,如果有则放行,执行相应业务代码。

1. filter过滤器

过滤器把对资源的请求拦截下来。

在这里插入图片描述

1.1 使用步骤

1.定义Filter:定义一个类,实现Filter接口,并重写其所有方法

2.配置Filter:Filter类上加@WebFilter注解,配置拦截资源的路径,引导类上加@ServletComponentScan开启Servlet组件支持。

doFilter 方法:
在 doFilter 方法中,开发者可以实现自定义的处理逻辑,比如修改请求头、记录日志等。
doFilter 方法中必须调用 FilterChain 的 doFilter 方法(下面的chain.doFilter),这样请求才能继续传递给下一个过滤器或目标资源(如 Servlet)。如果不调用,请求处理流程将会停止。

在这里插入图片描述

1.2 执行流程

注意①②③的顺序。
并且放行后访问对应资源,资源访问完成后,还是会回到Filter,并执行放行后的逻辑。

在这里插入图片描述

1.3 拦截路径

写在WebFilter注解中,配置拦截路径。

在这里插入图片描述

1.4 过滤器链

在一个web应用中,可以配置多个过滤器,这多个过滤器就形成了一个过滤器链。

顺序优先级:按照过滤器的类名自然排序。

在这里插入图片描述
效果如下:

在这里插入图片描述

1.5 登录校验流程(重要)

在这里插入图片描述
思考:在执行登陆操作时,用户并没有jwt令牌,所以不需要校验令牌。

注意:在Controller中操作,Restcontroller会自动的将返回值转为JSON。
那么在过滤器中如何操作呢?借助一个fastjson工具包!来类型强转。

HttpServletResponse resp = (HttpServletResponse) response;

2. 拦截器(sping框架提供)

2.1 使用步骤

1.定义拦截器,实现HandlerInterceptor接口,并重写所有方法,下图中的①;

2.注册拦截器,下图中的②;

在这里插入图片描述

2.2 路径拦截

在这里插入图片描述

2.3 流程

在这里插入图片描述

在请求处理过程中,拦截器的preHandle方法按注册顺序执行,而postHandle和afterCompletion方法按注册顺序的逆序执行与Filter相似。

3. 两者区别

1.接口规范不同:过滤器需要实现Filter接口,而拦截器需要实现HandlerInterceptor接口。

2.拦截范围不同:过滤器Filter会拦截所有的资源,而Interceptor只会拦截spring环境中的资源。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值