1. 程式人生 > >Spring MVC過濾器-委派過濾器代理(DelegatingFilterProxy)

Spring MVC過濾器-委派過濾器代理(DelegatingFilterProxy)

org.springframework.web.filter中有一個特殊的類——DelegatingFilterProxy,該類其實並不能說是一個過濾器,它的原型是FilterToBeanProxy,即將Filter作為spring的bean,由spring來管理。

配置方式如下:

1.配置web.xml

方法1:(不要求filer-name與實現javax.servlet.Filter的bean的類名相同,只要將targetBeanName的value值設定為相應的bean的類名即可),但是這種方法不會執行filter的init()和destory()方法。

    <filter
>
<filter-name>testFilter2</filter-name> <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class> <init-param> <param-name>targetBeanName</param-name> <param-value>testFilter2</param-value
>
</init-param> </filter> <filter-mapping> <filter-name>testFilter2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>

方法2(要求filer-name與實現javax.servlet.Filter的bean的類名相同,但是這種方法不會執行filter的init()和destory()方法。):

    <filter>
        <filter-name>testFilter2</filter-name>
        <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
        <init-param>
            <param-name>targetFilterLifecycle</param-name>
            <param-value>true</param-value>
        </init-param> 

    <filter-mapping>
        <filter-name>testFilter2</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

當然,也可以同時加上targetFilterLifecycle和targetBeanName引數,即:

    <filter>
        <filter-name>filter-name</filter-name>
        <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
        <init-param>
            <param-name>targetFilterLifecycle</param-name>
            <param-value>true</param-value>
        </init-param> 
        <init-param>  
            <param-name>targetBeanName</param-name>  
            <param-value>testFilter2</param-value>  
        </init-param>  
    </filter>

    <filter-mapping>
        <filter-name>filter-name</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

2、實現javax.servlet.Filter並且在applicationContext.xml中配置bean