问题
chain.doFilter(req,res);
We used this in a servlet program. I want to know what is the use of the method doFilter()
in a servlet?
Also what is the use of filter and chain concept in Java servlets?
回答1:
Servlet filters are implementation of the chain of responsibility pattern
The point is that each filter stays "in front" and "behind" each servlet it is mapped to. So if you have a filter around a servlet, you'll have:
void doFilter(..) {
// do stuff before servlet gets called
// invoke the servlet, or any other filters mapped to the target servlet
chain.doFilter(..);
// do stuff after the servlet finishes
}
You also have the option not to call chain.doFilter(..)
in which case the servlet will never be called. This is useful for security purposes - for example you can check whether there's a user logged-in.
回答2:
What are Filters ?
Filters
are used to intercept and process requests
before they are sent to servlets(in case of request) .
OR
Filters
are used to intercept and process a response
before they are sent back to client by a servlet.
Why they are used ?
-Filters can perform security checks.
-Compress the response stream.
-Create a different response.
What does doFilter() do ?
The
doFilter()
is calledevery time
the container determines that the filter should be applied to a page.
It takes three arguments
->ServletRequest
->ServlerResponse
->FilterChain
All the functionality that your filter supposed to do
is implemented inside doFilter()
method.
What is FilterChain ?
Your
filters do not know anything about the other filters and servlet
. FilterChain knows theorder of the invocation of filters
anddriven
by thefilter elements
you defined in theDD
.
回答3:
Filters are there to complement Servlets. For the usage, you should read this, The Essentials of Filters. Filters are implemented using Chain of Responsibility GoF pattern.
来源:https://stackoverflow.com/questions/4122870/what-is-the-use-of-filter-and-chain-in-servlet