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>        

  

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM