chain.doFilter(req,res);
我们在一个 servlet 程序中使用了它。我想知道doFilter()servlet 中方法的用途是什么?Java servlet中过滤器和链概念的用途是什么?
3 回答
Servlet 过滤器是责任链模式的实现
关键是每个过滤器都位于它映射到的每个 servlet 的“前面”和“后面”。因此,如果您有一个围绕 servlet 的过滤器,您将拥有:
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
}
您还可以选择不调用chain.doFilter(..),在这种情况下将永远不会调用 servlet。这对于安全目的很有用 - 例如,您可以检查是否有用户登录。
什么是过滤器?
Filters习惯于intercept and process requests在将它们发送到 servlet 之前(如果有请求)。
或者
Filtersintercept and process a response在它们被 servlet 发送回客户端之前,它们已经习惯了。
为什么使用它们?
-过滤器可以执行安全检查。
- 压缩响应流。
- 创建不同的响应。
doFilter() 有什么作用?
被
doFilter()调用every time的容器决定了过滤器应该应用于一个页面。
它需要three arguments
-> Servlet请求
->服务器响应
->过滤链
所有的functionality that your filter supposed to do都在方法内部实现doFilter()。
什么是过滤链?
你的
filters do not know anything about the other filters and servlet. FilterChain知道order of the invocation of filtersanddriven由filter elements您在DD.
