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 之前(如果有请求)。
或者
Filters
intercept 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 filters
anddriven
由filter elements
您在DD
.