JAVA基础:Spring Aop、拦截器、过滤器的区别

- Filter过滤器:拦截web访问url地址。 这个比拦截器范围广,过滤器是大集合,拦截器是大集合中的小集合。而且任何url是先经过过滤器后才进入拦截器的。
- Interceptor拦截器:拦截以 .action结尾的url,拦截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>

  拦截器,以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.demo.MyAspectXml"></bean>
<!-- 进行 aop 的配置 -->
<aop:config>
      <!-- 配置切入点表达式:哪些类的哪些方法需要进行增强 -->
      <aop:pointcut  expression="execution(*cn.itcast.spring.demo.OrderDao.save(..))" id="pointcut1"/>
      <!-- 配置切面 -->
      <aop:aspect ref="myAspectXml">
        <aop:before method="before" pointcut-ref="pointcut1"/>
      </aop:aspect>
</aop:config>
<!-- 配置切面类 -->
<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"/>
      <!-- 配置切面 -->
      <aop:aspect ref="myAspectXml">
          <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>

  

猜你喜欢

转载自www.cnblogs.com/somelog/p/9293283.html
今日推荐