为什么单独定义过滤器和过滤器映射(与 Servlet 相同)?
Why filters and filter-mappings (same with Servlets) are defined seperately?
单独定义 filter
和 filter-mapping
是否有任何好处,而它们可以合并为一个 space? (对于 Servlet 也是如此)
<filter>
<filter-name>myFilter</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
<filter-mapping>
<filter-name>myFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
我的意思是结合如下。
<superfilter>
<filter-name>myFilter</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
<url-pattern>/*</url-pattern>
</superfilter>
这是因为通过分离 <filter>
和 <filter-mapping>
,您可以将相同的过滤器应用于不同的 URL 模式。
根据评论,您提出为什么不将它们组合成一个 <filter>
赞:
<filter>
<filter-name>myFilter</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
<url-patterns>/foo<url-pattern>
<url-patterns>/bar<url-pattern>
<url-patterns>/baz<url-pattern>
</filter>
过滤器和 url 映射可以有更多的配置属性,例如 <dispatcher>
(或者在未来的规范中可能会有更多)。假设以上所有映射都有不同的设置,您提出的解决方案可能会导致
有一个看起来像的大结构:
<filter>
<filter-name>myFilter</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
<url-patterns>
<name>/foo</name>
<dispatcher>FORWARD</dispatcher>
<dispatcher>INCLUDE</dispatcher>
</url-pattern>
<url-patterns>
<name>/foo</name>
<dispatcher>ERROR</dispatcher>
</url-pattern>
<url-patterns>
<name>/foo</name>
<dispatcher>FORWARD</dispatcher>
</url-pattern>
</filter>
我认为你喜欢展平结构还是嵌套结构,这是一个偏好问题。我猜 Servlet 规范设计者更喜欢扁平化,所以选择扁平化。
单独定义 filter
和 filter-mapping
是否有任何好处,而它们可以合并为一个 space? (对于 Servlet 也是如此)
<filter>
<filter-name>myFilter</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
<filter-mapping>
<filter-name>myFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
我的意思是结合如下。
<superfilter>
<filter-name>myFilter</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
<url-pattern>/*</url-pattern>
</superfilter>
这是因为通过分离 <filter>
和 <filter-mapping>
,您可以将相同的过滤器应用于不同的 URL 模式。
根据评论,您提出为什么不将它们组合成一个 <filter>
赞:
<filter>
<filter-name>myFilter</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
<url-patterns>/foo<url-pattern>
<url-patterns>/bar<url-pattern>
<url-patterns>/baz<url-pattern>
</filter>
过滤器和 url 映射可以有更多的配置属性,例如 <dispatcher>
(或者在未来的规范中可能会有更多)。假设以上所有映射都有不同的设置,您提出的解决方案可能会导致
有一个看起来像的大结构:
<filter>
<filter-name>myFilter</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
<url-patterns>
<name>/foo</name>
<dispatcher>FORWARD</dispatcher>
<dispatcher>INCLUDE</dispatcher>
</url-pattern>
<url-patterns>
<name>/foo</name>
<dispatcher>ERROR</dispatcher>
</url-pattern>
<url-patterns>
<name>/foo</name>
<dispatcher>FORWARD</dispatcher>
</url-pattern>
</filter>
我认为你喜欢展平结构还是嵌套结构,这是一个偏好问题。我猜 Servlet 规范设计者更喜欢扁平化,所以选择扁平化。