filter和iterceptor的区别

Filter主要是用来过滤一些编码之类的东西的

springmvc的拦截器主要作用也是在服务端真正处理请求前后进行一些相关的操作。 例如初始化资源,权限监控,会话设置,菜单获取,资源清理等。

拦截器和filter(过滤器)的区别

a.实现的接口不一样 HandlerInterceptor   Filter

b.Filter必须依赖于web容器,但是拦截器不一定依赖web容器

c.Filter是基于回调函数的,拦截器是基于AOP思想的一个实现

d.Filter设计的目的是对请求和响应进行过滤,拦截器的目的是拦截

e.interceptor是用来拦截controller方法的,它是拦截不住servlet的,它是使用aop技术实现的

f.filter是用来过滤servlet请求的,基于servlet的,它是基于web

如下这个图,这就是它们几个之间的关系

当浏览器发送请求的时候,先走的是filter,才走的interceptor

Filter它会过滤servlet,jsp,和静态资源,过滤jsp的原因是jsp其实也是一个servlet的,而静态资源的话,其实静态资源加载的时候也是发送的请求访问的后台的方法所以也会过滤的.

使用Filter的时候如何放行静态资源呢

在springmvc配置文件加这段

<!-- 放行静态资源 -->
<mvc:default-servlet-handler/>    //如果加了这一句的话下面就不用加了,如果加这句不好使再加下面的这些

<!-- <mvc:resources mapping="/easyUI/**" location="/easyUI/" />
<mvc:resources mapping="/imags/**" location="/imags/"/>
<mvc:resources mapping="/js/**" location="/js/"/>
<mvc:resources mapping="/zTree_v3/**" location="/zTree_v3/"/>
<mvc:resources mapping="/images/**" location="/images/"/>
-->

interceptor也会拦截静态资源,放行方式

使用ssm的方式

<mvc:interceptors>
   <!-- 权限拦截器-->
    <mvc:interceptor>
        <mvc:mapping path="/**"/>
        <!--放行静态资源-->
        <mvc:exclude-mapping path="/css/**"/>
        <mvc:exclude-mapping path="/demo/**"/>
        <mvc:exclude-mapping path="/easyUI/**"/>
        <mvc:exclude-mapping path="/images/**"/>
        <mvc:exclude-mapping path="/js/**"/>
        <ref bean="loginInterceptor"/>
    </mvc:interceptor>
</mvc:interceptors>

使用springboot的方式 ,配置自定义过滤类

package com.buba.configuration;

        import org.springframework.beans.factory.annotation.Autowired;
        import org.springframework.boot.SpringBootConfiguration;
        import org.springframework.web.servlet.HandlerInterceptor;
        import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
        import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;

@SpringBootConfiguration
public class InterceptorConfiguration extends WebMvcConfigurerAdapter {
    @Autowired
    private HandlerInterceptor interceptor;

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(interceptor).addPathPatterns("/**").excludePathPatterns("");
        //addPathPatterns("/**")  这是拦截那些路径
        //excludePathPatterns("")这是放行那些路径,可以加多个这方法,接着点就行
    }
}

springboot如何使用拦截器 https://blog.csdn.net/kxj19980524/article/details/85318273

springboot如何使用过滤器 https://blog.csdn.net/kxj19980524/article/details/85282414

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值