据我所知,尚无解决方案可直接在中通过查询字符串将请求匹配到过滤器
web.xml。因此,您可以在
web.xml使用init-
params的情况下注册过滤器,以使过滤器可配置,并
void init(FilterConfigfilterConfig)在
javax.servlet.Filter实现中设置模式。
package mypackage;import java.io.IOException;import javax.servlet.Filter;import javax.servlet.FilterChain;import javax.servlet.FilterConfig;import javax.servlet.ServletException;import javax.servlet.ServletRequest;import javax.servlet.ServletResponse;import javax.servlet.http.HttpServletRequest;public class MyFilter implements Filter { private String pattern; @Override public void destroy() { // TODO Auto-generated method stub } @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { // check whether we have a httpServletRequest and a pattern if (this.pattern != null && request instanceof HttpServletRequest) { // resolve the query string from the httpServletRequest String queryString = ((HttpServletRequest) request).getQueryString(); // check whether a query string exists and matches the given pattern if (queryString != null && queryString.matches(pattern)) { // TODO do someting special } } chain.doFilter(request, response); } @Override public void init(FilterConfig filterConfig) throws ServletException { this.pattern = filterConfig.getInitParameter("pattern"); }}您的web.xml中的配置如下所示:
<!-- MyFilter --><filter> <filter-name>myFilter</filter-name> <filter-class>mypackage.MyFilter</filter-class> <init-param> <param-name>pattern</param-name> <param-value>{{PATTERN HERE}}</param-value> </init-param></filter><filter-mapping> <filter-name>myFilter</filter-name> <url-pattern>/*</url-pattern></filter-mapping>- 进一步阅读:http
- //java.sun.com/javaee/5/docs/api/javax/servlet/Filter.html



