gpt4 book ai didi

servlets - 包装器,过滤器和Servlet

转载 作者:行者123 更新时间:2023-12-04 13:33:01 25 4
gpt4 key购买 nike

由于我是Servlet编程的新手,所以我可能会问一个基本问题。

我正在编写一个应用程序,其中过滤器从Servlet获取响应,并使用它进行一些计算。我发现我需要一个包装器类来捕获响应。

我现在的问题是为什么需要 wrapper ?提前致谢!

最佳答案

1)首先让我们了解RequestRequest Filter的工作方式:

假设客户端向Servlet发出请求时,它会通过容器。容器决定将什么servlet Request转发到。这意味着,容器处于完全控制之下。

容器控制使实现请求过滤器变得容易,因为我们可以让容器知道Request应该先过滤然后再到servlet。因为容器是完全控制的。因此,实现请求过滤器很容易。

2)现在让我们了解ResponseResponse Filter的工作方式:

当容器调用Servlet服务方法时,它将两个对象传递给方法RequestResponse

这仅意味着Servlet完全可以控制将响应发送回客户端。如何 ?

因为Response对象具有指向Output Stream Writer对象的指针。这意味着,一旦Servlet完成对请求的处理,它将使用指向Response对象的指针将Output Writer Stream直接写回客户端。因此,Servlet不会等待任何人(像过滤器这样的中间人)直接为客户服务。到那时,干预已经为时已晚。

那么,有什么解决方案?
Wrapper是我们的解决方案。

包装器如何工作?

因此,在容器将实际的RequestResponse对象传递给Servlet之前,我们将包装Response对象,然后将Real RequestWrapped Response对象发送到Servlet服务方法。

因此,现在,Servlet具有指向我们的Wrapped Output Stream Writer对象而不是Real Response Output Stream Writer对象的指针。因此,当Servlet完成请求时,它将把响应写到Wrapped Stream,然后我们的Wrapped Response Object将写回Real Response Writer Stream

故事的寓意:处理wrapper时使用ResponseRequest不需要包装器概念。

关于servlets - 包装器,过滤器和Servlet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16480321/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com