过滤器&拦截器的使用-登入效验及区别

过滤器的使用-登入效验:

打上注解@WebFilter 表示要过滤的内容/*表示过滤全部,

实现Filter接口,重写接口中doFilter方法,

获取请求路径uri,

代码如下:

 判断是否是登录请求

是就放行,不是就获取token

代码如下:

判断token是否为空 为空则直接拦截并返回给客户端

代码如下:

 token不为空则解析token 

如果token解析异常直接拦截 返回给前端

解析正常放行

代码如下:

 最后在引导类打上注解@ServletComponentScan 扫描全局没有该注解过滤器不生效

拦截器的使用-登入效验:

创建类 实现 HandlerInterceptor 接口

重写 preHandle 方法 重写的内容为登录的效验逻辑 逻辑和过滤器的逻辑一致

在类上写上@Component注解,注入到容器中

代码如下:

 创建配置类 实现WebMvcConfigurer接口 重写addInterceptors方法

在方法中添加拦截器并编写拦截的规则

addPathPatterns 中写的要拦截的资源,多个路径用逗号隔开

/* 拦截一级路径

/**拦截任意级路径

/checkgroup/*拦截/checkgroup下的一级路径

/checkgroup/**拦截/checkgroup下的任意级路径

excludePathPatterns 中写的是要放行的资源

在类上写上@Configuration注解 作用:声明一个类为配置类,用于取代bean.xml配置文件注册bean对象

出现异常后和拦截的异常一致

代码如下:

 

 过滤器与拦截器的区别:

触发顺序不一样

        先执行过滤器再执行拦截器 ,过滤前 - 拦截前 - Action处理 - 拦截后 - 过滤后。

拦截器是基于java的反射机制的,而过滤器是基于函数回调。

拦截器不依赖与servlet容器,过滤器依赖与servlet容器。

拦截器只能对action请求起作用,而过滤器则可以对几乎所有的请求起作用。

拦截器可以访问action上下文、值栈里的对象,而过滤器不能访问。

在action的生命周期中,拦截器可以多次被调用,而过滤器只能在容器初始化时被调用一次

拦截器可以获取IOC容器中的各个bean,而过滤器就不行,这点很重要,在拦截器里注入一个service,可以调用业务逻辑。

 两者的本质区别:从灵活性上说拦截器功能更强大些,Filter能做的事情,他都能做,而且可以在请求前,请求后执行,比较灵活。Filter主要是针对URL地址做一个编码的事情、过滤掉没用的参数、安全校验(比较泛的,比如登录不登录之类),太细的话,还是建议用interceptor。不过还是根据不同情况选择合适的。
—原文链接:https://blog.csdn.net/qq_36312376/article/details/82968653

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值