拦截器和过滤器

springmvc中有两种很普遍的AOP实现:
1.过滤器(Filter)
2.拦截器(Interceptor)

拦截器,在AOP(Aspect-Oriented Programming)中用于在某个方法或字段被访问之前,进行拦截然后在之前或之后加入某些操作。拦截是AOP的一种实现策略。

过滤器是一个程序,它先于与之相关的servlet或JSP页面运行在服务器上。过滤器可附加到一个或多个servlet或JSP页面上,并且可以检查进入这些资源的请求信息。

这两个都是拦截请求但是有区别

区别如下:

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

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

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

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

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

拦截器的配置

    <!--  4. 配置拦截器  -->
    <mvc:interceptors>
        <mvc:interceptor>
            <!--  拦截所有的mvc控制器          -->
            <mvc:mapping path="/**"/>
            <!--   mvc:exclude-mapping - 是另一种拦截,他可以在你后来测试中对某一个页面进行不拦截
            ,这样 就不要在LoginInterceptor中获取登陆的url,进行放行         -->
            <mvc:exclude-mapping path="/userInfoController/doLogin.do"/>
            <!--  告诉使用哪一个拦截器          -->
            <bean class="com.zrgj.interceptor.LoginInterceptor"/>
        </mvc:interceptor>
    </mvc:interceptors>

配置放行

    <security:http auto-config="true" use-expressions="true">
      <!-- 配置具体的拦截的规则 pattern="请求路径的规则" access="访问系统的人,必须有ROLE_USER的角色" -->
      <security:intercept-url pattern="/**" access="hasAnyRole('ROLE_USER','ROLE_ADMIN')"/>

      <security:form-login login-page="/login.jsp"
                           login-processing-url="/login.do"
                          default-target-url="/index.jsp"
                          authentication-failure-url="/failer.jsp"
                          authentication-success-forward-url="/pages/main.jsp"/>

      <!-- 关闭跨域请求 -->
      <security:csrf disabled="true"/>

      <!--退出并跳转到首页-->
      <security:logout invalidate-session="true" logout-url="/logout.do" logout-success-url="/login.jsp"></security:logout>

  </security:http>



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值