标题: 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,来配置更细致的正则来区分各个子系统。