过滤器和链条在 servlet 中的用途是什么?

2022-09-01 13:42:08

chain.doFilter(req,res);
我们在 servlet 程序中使用它。我想知道该方法在 servlet 中的用途是什么?另外,过滤器和链概念在Java servlet中的用途是什么?doFilter()


答案 1

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
}

您还可以选择调用,在这种情况下,将永远不会调用 servlet。这对于安全目的非常有用 - 例如,您可以检查是否有用户登录。chain.doFilter(..)


答案 2

什么是过滤器?

Filters在将它们发送到 servlet 之前(在请求的情况下)已经习惯了。intercept and process requests

Filters在它们被 servlet 发送回客户端之前已经习惯了。intercept and process a response

enter image description here

为什么使用它们?

-过滤器可以执行安全检查。

-压缩响应流。

-创建不同的响应。

doFilter() 是做什么的?

称为 容器确定应将筛选器应用于页面。doFilter()every time

它需要three arguments

->ServletRequest

->ServlerResponse

->过滤器链

所有这些都是在方法内部实现的。functionality that your filter supposed to dodoFilter()

什么是过滤器链?

你。过滤器链知道 和 由 您在 中定义的 .filters do not know anything about the other filters and servletorder of the invocation of filtersdrivenfilter elementsDD


推荐