zoukankan      html  css  js  c++  java
  • JAVA基础:Spring Aop、拦截器、过滤器的区别

    - Filter过滤器:拦截web访问url地址。 这个比拦截器范围广,过滤器是大集合,拦截器是大集合中的小集合。而且任何url是先经过过滤器后才进入拦截器的。
    - Interceptor拦截器:拦截url以action结尾或者没有后缀的,没有后缀拦截器会认为是.action结尾。。 如:struts2拦截器、spring拦截器
    - Spring AOP拦截器:只能拦截Spring管理Bean的访问(业务层Service),就是说执行某个bean容器中方法时进行拦截,而不是对url。

    过滤器配置在web.xml中,而拦截器是配置在框架中。

    过滤器的配置(web.xml):

    <filter>   
        <!-- 过滤器名称 -->
        <filter-name>loginFilter</filter-name>
        <!-- 过滤器的路径 -->
        <filter-class>com.ygj.control.loginFilter</filter-class>
      <!-- 可选 -->
    	<init—param>      
    	<!-- 过滤器初始化参数-->
          <param—name>参数名</param-name>
          <param-value>参数值</param-value> 
      </init—pamm> 
    </filter>
     <!-- 过滤器映射 -->
    <filter-mapping>
        <filter-name>loginFilter</filter-name> 
      <url—pattern>指定过滤器作用的对象</url-pattern>
    </filter-mapping>
    

      

      拦截器,以springmvc为例配置在spring.xml:

    <mvc:interceptors>  
       <!--  使用bean定义一个Interceptor,直接定义在mvc:interceptors根下面的Interceptor将拦截所有的请求   -->
        <!-- <bean class="com.bybo.aca.web.interceptor.Login"/> -->   
        <mvc:interceptor>  
            <!-- 进行拦截:/**表示拦截所有controller -->
            <mvc:mapping path="/**" />
           <!-- 不进行拦截 -->
            <mvc:exclude-mapping path="/index.html"/>
           
            <bean class="com.bybo.aca.web.interceptor.Login"/>  
        </mvc:interceptor>  
    </mvc:interceptors>     
    

      springAOP

    <!-- 配置切面类 -->
    <bean id="myAspectXml" class="cn.itcast.spring.demo3.MyAspectXml"></bean>
    <!-- 进行 aop 的配置 -->
    <aop:config>
          <!-- 配置切入点表达式:哪些类的哪些方法需要进行增强,就是说执行某个方法进行拦截 -->
          <aop:pointcut  expression="execution(*cn.itcast.spring.demo.*Dao.save(..))" id="pointcut1"/>
          <aop:pointcut  expression="execution(*cn.itcast.spring.demo.*Dao.delete(..))" id="pointcut2"/>
          <aop:pointcut  expression="execution(*cn.itcast.spring.demo.*Dao.update(..))" id="pointcut3"/>
          <aop:pointcut  expression="execution(*cn.itcast.spring.demo.*Dao.find(..))" id="pointcut4"/>
          <!-- 配置切面 -->
          <!-- myAspectXml内含有before,afterReturing,around,afterThrowing,after方法-->
          <aop:aspect ref="myAspectXml">
          <!-- method是切面类调用的方法,pointcut-ref是拦截的方法 -->
              <aop:before method="before" pointcut-ref="pointcut1"/>
              <aop:after-returning  method="afterReturing"
    pointcut-ref="pointcut2"/>
              <aop:around method="around" pointcut-ref="pointcut3"/>
              <aop:after-throwing method="afterThrowing" pointcut-ref="pointcut4"/>
              <aop:after method="after" pointcut-ref="pointcut4"/>
          </aop:aspect>
    </aop:config>        
    

      

      

    多一份坚持,少一份懒惰
  • 相关阅读:
    Github地址
    第三次冲刺12.16
    第三次冲刺12.07~12.15
    第二次冲刺11.24~12.03
    第十天
    照片
    最终总结
    app的推广
    第三个Sprint冲刺事后诸葛亮报告
    第三个Sprint团队贡献分
  • 原文地址:https://www.cnblogs.com/somelog/p/9293283.html
Copyright © 2011-2022 走看看