Issue
Is there any way to make a filtermapping not include subdirectories?
For example.
I have .xhtml files in my context root, and I also have a subfolder named "test" with files with the same extension. Is there any may to map a filter to the files in context root and not to the files in the "test" directory?
Solution
The url-pattern
is indeed restrictive in matching. It only allows exact, prefix or suffix matchnig. Not midst/overall/regex matching. So e.g. /*.xhtml
what you intend to do ain't going to work.
If you want to exclude XHTML in the /test
folder only, then your best is really a Filter
listening on an url-pattern
of *.xhtml
which does basically the following job in doFilter()
method:
// First cast ServletRequest to HttpServletRequest.
HttpServletRequest hsr = (HttpServletRequest) request;
// Check if requested resource is not in /test folder.
if (!hsr.getServletPath().startsWith("/test/")) {
// Not in /test folder. Do your thing here.
}
The HttpServletRequest#getServletPath()
basically returns the part of the request URI from the context path on.
You can if necessary configure the value /test
as an <init-param>
of the filter so that you can control the value from inside the web.xml
instead of in the Filter's code.
Answered By - BalusC