chain.doFilter(req,res);
我们在servlet程序中使用了它。我想知道servlet中方法doFilter()
的用法是什么?
还有什么在Java servlet中使用过滤器和链概念?
答案 0 :(得分:35)
Servlet过滤器是chain of responsibility pattern
的实现重点是每个过滤器都保持在它所映射到的每个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
}
您还可以选择 not 来调用chain.doFilter(..)
,在这种情况下,永远不会调用servlet。这对于安全目的很有用 - 例如,您可以检查是否有用户登录。
答案 1 :(得分:20)
什么是过滤器?
Filters
在发送给servlet之前用于intercept and process requests
(如果是请求)。
<强> OR 强>
Filters
在被servlet发送回客户端之前用于intercept and process a response
。
为何使用它们?
- 过滤器可以执行安全检查。
- 压缩响应流。
- 创建不同的回复。
doFilter()做什么?
doFilter()
被称为every time
,容器决定了这一点 过滤器应该应用于页面。
需要three arguments
- &GT; 的ServletRequest
- &GT; ServlerResponse
- &GT; FilterChain
所有functionality that your filter supposed to do
都在doFilter()
方法中实现。
什么是FilterChain?
您的
filters do not know anything about the other filters and servlet
。 FilterChain 通过您在order of the invocation of filters
中定义的driven
了解filter elements
和DD
。
答案 2 :(得分:12)
过滤器可以补充Servlets。对于用法,您应该阅读The Essentials of Filters。过滤器使用Chain of Responsibility GoF模式实现。