java - 在 web.xml url-pattern 匹配器中是否有排除 URL 的方法?

标签 java spring tomcat servlet-filters

我编写了一个过滤器,每次访问我网站上的 URL 时都需要调用它,除了 CSS、JS 和 IMAGE 文件。所以在我的定义中,我想有类似的东西:

<filter-mapping>
   <filter-name>myAuthorizationFilter</filter-name>
   <url-pattern>NOT /css && NOT /js && NOT /images</url-pattern>
</filter-mapping>

有没有办法做到这一点?我能找到的唯一文档只有/*

更新:

我最终使用了类似于 Mr.J4mes 提供的答案:

   private static Pattern excludeUrls = Pattern.compile("^.*/(css|js|images)/.*$", Pattern.CASE_INSENSITIVE);
   private boolean isWorthyRequest(HttpServletRequest request) {
       String url = request.getRequestURI().toString();
       Matcher m = excludeUrls.matcher(url);

       return (!m.matches());
   }

最佳答案

我想你可以试试这个:

@WebFilter(filterName = "myFilter", urlPatterns = {"*.xhtml"})
public class MyFilter implements Filter {

   @Override
   public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
            throws IOException, ServletException {
      String path = ((HttpServletRequest) request).getServletPath();

      if (excludeFromFilter(path)) chain.doFilter(request, response);
      else // do something
   }

   private boolean excludeFromFilter(String path) {
      if (path.startsWith("/javax.faces.resource")) return true; // add more page to exclude here
      else return false;
   }
}

关于java - 在 web.xml url-pattern 匹配器中是否有排除 URL 的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8658949/

相关文章:

java - 在 servlet-context 中的 dev 和 prod 值之间切换的标志

java - 如何修复日期转换时的 'JsonSyntaxException'

java - Primefaces:转换错误设置值 'Admin' 为 'null Converter'

java - Hibernate 映射有时会停止工作

java - 在 Java 中使用 boolean 值测试 int 变量

spring - 如何从 PageRequest 禁用计数查询以获取总页数?

java - Spring ClientHttpRequestInterceptor

java - Spring 应用程序的 Tomcat 配置

java - MessageBrokerServlet 初始化问题——将数据从 java 推送到 Flex 应用程序

java - Tomcat 7.0.29 servlet-api 类加载器问题