标题: PatternFilter支持正则表达式的Filter

描述: 支持使用正则过滤指定URL

web.xml配置时加入init - params: include:配置需要过滤的url规则,支持正则,多个值之间用','分割 ,exclude:配置不需要过滤的url规则,支持正则,多个值之间用','分割 。

问题:

由于Filter的 url-pattern匹配规则 的原因,Filter在url匹配时,不支持正则,当业务中够复杂时这是不够了。所以支持正则表达式的Filter:PatternFilter问世了。

配置示例:

	<!-- SiteMesh,对SiteMeshFilter的增强,支持正则表达式过滤url -->
	<filter>
		<filter-name>sitemeshFilter</filter-name>
		<filter-class>com.sicheng.common.filter.ShopSiteMeshFilter</filter-class>
        <init-param>  
            <description>以下url需要由本filter来处理,支持正则,多个值之间用','分割</description>  
            <param-name>include</param-name>  
            <param-value>/member/.*,/seller/.*,/sso/.*</param-value>  
        </init-param>  
        <init-param>  
            <description>以下url不需要由本filter来处理,支持正则,多个值之间用','分割</description>  
            <param-name>exclude</param-name>  
            <param-value></param-value>  
        </init-param> 
	</filter>
	<filter-mapping>
		<filter-name>sitemeshFilter</filter-name>
		<url-pattern>*.do</url-pattern>
	</filter-mapping>
	<filter-mapping>
		<filter-name>sitemeshFilter</filter-name>
		<url-pattern>*.htm</url-pattern>
	</filter-mapping>

实际使用场景:

某商城系统,由多个子系统组成,并有一部分子系统使用了SiteMesh装饰框架。某些子系统是了一个工程内的,只是分了不同的package包。

SiteMesh装饰框架的入口是一个Filter过滤器。此时要求SiteMesh装饰框架的Filter的  url-pattern匹配规则,支持更加细分的URL匹配规则才能业务要求。

其中一个叫front的子系统不想使用SiteMesh装饰框架(因为 SiteMesh性能较差 ),就使用PatternFilter,来配置更细致的正则来区分各个子系统。