Java 在web.xml url模式匹配器中,是否有排除url的方法?
我编写了一个过滤器,除了CSS、JS和图像文件之外,每次访问我网站上的url时都需要调用它。因此,在我的定义中,我希望有如下内容:Java 在web.xml url模式匹配器中,是否有排除url的方法?,java,spring,tomcat,servlet-filters,Java,Spring,Tomcat,Servlet Filters,我编写了一个过滤器,除了CSS、JS和图像文件之外,每次访问我网站上的url时都需要调用它。因此,在我的定义中,我希望有如下内容: <filter-mapping> <filter-name>myAuthorizationFilter</filter-name> <url-pattern>NOT /css && NOT /js && NOT /images</url-pattern> <
<filter-mapping>
<filter-name>myAuthorizationFilter</filter-name>
<url-pattern>NOT /css && NOT /js && NOT /images</url-pattern>
</filter-mapping>
我想你可以试试这个:
@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;
}
}
URL模式映射不支持排除。这是Servlet规范的一个限制。您可以尝试J4mes先生发布的手动解决方法。可能您可以为
css
、js
等声明另一个“空白”筛选器,并将其放在其他筛选器映射之前。我使用了安全约束来访问控制。参见代码:
<security-constraint>
<web-resource-collection>
<web-resource-name>Unsecured resources</web-resource-name>
<url-pattern>/resources/*</url-pattern>
<url-pattern>/javax.faces.resource/*</url-pattern>
</web-resource-collection>
</security-constraint>
无担保资源
/资源/*
/javax.faces.resource/*
我遵循教程。@WebFilter来自哪里?我目前正在使用SpringMVC,我正在使用@Service(value=“myAuthorizationFilter”)定义我的过滤器,我认为这是一个普通的JavaEE注释。我最终做了一些非常类似的事情,但我使用了带有模式和匹配器的正则表达式。类似这样:
private static Pattern excludeUrls=Pattern.compile(“^.*/(css | js | images | ckeditor)/.*$”,Pattern.CASE不区分大小写)代码>:P然后您应该更新您的问题,说明您是如何成功完成此操作的,并且您可以将此问题也标记为答案=P。可能重复的
<security-constraint>
<web-resource-collection>
<web-resource-name>Unsecured resources</web-resource-name>
<url-pattern>/resources/*</url-pattern>
<url-pattern>/javax.faces.resource/*</url-pattern>
</web-resource-collection>
</security-constraint>