在 Java 过滤器中获取配置的 url 模式 [重复]

Posted

技术标签:

【中文标题】在 Java 过滤器中获取配置的 url 模式 [重复]【英文标题】:Get configured url patterns in a Java Filter [duplicate] 【发布时间】:2015-09-11 17:31:03 【问题描述】:

我找不到在过滤器中获取 url 映射信息的方法。

例如,web.xml:

<filter>
    <filter-name>someFilter</filter-name>
    <filter-class>com.xxx.filter.SomeFilter</filter-class>
</filter>

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

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

然后在 SomeFilter 中,我想获取映射列表 ["/ws/","/rest/"]。有没有办法得到它?

@Override 
public void init(FilterConfig filterConfig)
    filterConfig.getXXX() // -> ["/ws/*","/rest/*"]???

【问题讨论】:

一个问题,为什么需要知道映射列表? @jWeaver 这个问题和你建议的无关... 为什么所有这些人都将其标记为 dup? 提到的问题是关于在 web.xml 中配置 url 模式。这个问题是关于在 Java 代码中读取该配置的。所提到的问题只有 XML 示例而没有 Java 代码这一事实应该是一个很大的暗示,表明这个问题不是重复的。 【参考方案1】:

Filterconfig 是每个过滤器,并且只知道该过滤器。 不确定意图,但要读取 URL,您可以简单地读取 web.xml 并使用文件读取方法搜索过滤器 URL 模式

【讨论】:

【参考方案2】:

这并不完美,但尝试将它们定义为过滤器内的init param,然后从代码中读取init-param

<filter>
    <filter-name>someFilter</filter-name>
    <filter-class>com.xxx.filter.SomeFilter</filter-class>
<init-param>
      <param-name>someFilter</param-name>
      <param-value>/ws/*</param-value>
    </init-param>
</filter>
<filter-mapping>
    <filter-name>someFilter</filter-name>
    <url-pattern>/ws/*</url-pattern>
</filter-mapping>

过滤器类:

FilterConfig config;  

public void init(FilterConfig config) throws ServletException   
    this.config=config;  


public void doFilter(ServletRequest req, ServletResponse resp,  
    FilterChain chain) throws IOException, ServletException 
 String s=config.getInitParameter("someFilter");

尝试将其应用于每个过滤器,然后将所有值存储在应用程序中的其他变量中,但如果您在应用程序中使用了一个过滤器,这将对您有所帮助。

【讨论】:

重点是我需要知道url-pattern中配置的url列表 感谢您的建议,我已经想到了。然而,这是一种解决方法。我想知道是否有一个标准的方法来实现这一点。

以上是关于在 Java 过滤器中获取配置的 url 模式 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

特定于请求参数的 Java 过滤器 URL 模式

防火墙(ASA)高级配置之URL过滤日志管理透明模式

java 设计模式之过滤器模式(Filter)

Spring Security 3 自定义过滤器和 URL 模式

在 Zuul 过滤器中处理不同的 URL 模式

java 中使用filter控制登录 其web.xml 配置了<url-pattern>/*</url-pattern> 但是不能正常过滤一些url