Implementation of a Filter that performs filtering based on comparing the
appropriate request property (selected based on which subclass you choose
to configure into your Container's pipeline) against a set of regular
expressions configured for this Filter.

This filter is configured by setting the allow and/or
deny properties to a comma-delimited list of regular
expressions (in the syntax supported by the jakarta-regexp library) to
which the appropriate request property will be compared. Evaluation
proceeds as follows:

The subclass extracts the request property to be filtered, and
calls the common process() method.

If there are any deny expressions configured, the property will
be compared to each such expression. If a match is found, this
request will be rejected with a "Forbidden" HTTP response.

If there are any allow expressions configured, the property will
be compared to each such expression. If a match is found, this
request will be allowed to pass through to the next filter in the
current pipeline.

If one or more deny expressions was specified but no allow expressions,
allow this request to pass through (because none of the deny
expressions matched it).

The request will be rejected with a "Forbidden" HTTP response.

This Filter may be attached to any Container, depending on the granularity
of the filtering you wish to perform.

Extract the desired request property, and pass it (along with the
specified request and response objects) to the protected
process() method to perform the actual filtering.
This method must be implemented by a concrete subclass.