【问题标题】:Get configured url patterns in a Java Filter [duplicate]在 Java 过滤器中获取配置的 url 模式 [重复]
【发布时间】: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 代码这一事实应该是一个很大的暗示,表明这个问题不是重复的。

标签: java servlets filter servlet-filters


【解决方案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列表
    • 感谢您的建议,我已经想到了。然而,这是一种解决方法。我想知道是否有一个标准的方法来实现这一点。
    猜你喜欢
    • 2011-10-17
    • 1970-01-01
    • 1970-01-01
    • 2011-03-04
    • 2016-09-29
    • 2015-05-27
    • 2014-09-10
    • 2013-06-16
    • 2016-08-24
    相关资源
    最近更新 更多