Servlets 包装器、过滤器和Servlet

Servlets 包装器、过滤器和Servlet,servlets,filter,wrapper,Servlets,Filter,Wrapper,由于我是Servlet编程新手,我可能会问一个基本问题 我正在编写一个应用程序,其中过滤器从servlet获取响应,并使用它进行一些计算。我发现我需要一个包装器类来捕获响应 我现在的问题是为什么需要包装?提前谢谢 1)首先让我们了解请求和请求过滤器的工作原理: 比如说,当客户机向servlet发出请求时,它将通过容器。容器决定需要转发到哪个servlet请求。也就是说,容器处于完全控制之下 容器控制使实现请求过滤器变得容易,因为我们可以让容器知道请求应该先进入过滤器,然后进入servlet。因为

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

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

我现在的问题是为什么需要包装?提前谢谢

1)首先让我们了解
请求
请求过滤器
的工作原理:

比如说,当客户机向servlet发出请求时,它将通过容器。容器决定需要转发到哪个servlet
请求。也就是说,容器处于完全控制之下

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

2)现在让我们了解
Response
Response Filter
的工作原理:

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

这仅仅意味着Servlet完全可以控制将响应发送回客户机。怎么做

因为
Response
对象具有指向
Output Stream Writer
对象的指针。这意味着,一旦Servlet完成了对请求的处理,它将直接使用指向
输出编写器流
对象的指针将
响应
写回客户端。所以,Servlet不会等待任何人(如filter这样的中间人)直接服务于客户机。到那时,干预就太晚了

那么,解决方案是什么?

Wrapper
是我们的解决方案

包装器是如何工作的?

因此,在容器将真实的
请求
响应
对象传递给Servlet之前,我们将包装
响应
对象,然后将
真实请求
包装响应
对象发送给Servlet服务方法

现在,Servlet的指针指向我们的
包装输出流编写器
对象,而不是
真实响应输出流编写器
对象。因此,当Servlet完成请求时,它将把响应写入我们的
包装流
,然后我们的
包装响应对象
将写回
真实响应编写器流


故事的寓意:在处理
响应时使用
包装器
<代码>请求
不需要包装器概念。

只有你才能回答这个问题,因为你已经发现你需要一个包装器类:-)你想实现什么?不,包装器(请求/响应)并不总是必要的……据我所知,当我想要捕获Servlet响应并在过滤器中使用它时,我需要一个包装器。对吗?这个例子怎么样:我有一个表单,用户可以在其中输入用户名和一些文本。然后,应将其显示在另一页上。我知道servlet可以获取输入参数并转发到另一个页面。我能用过滤器达到同样的效果吗?1。不,是谁告诉你的(举个例子可能会有帮助)?2.我不想在过滤器中实现业务逻辑,为什么您认为过滤器是更好的选择?我想我真的很困惑这两种东西的用途……一般来说,您应该在非功能方面使用过滤器。请参阅以获取一些示例。请求可能需要一个包装器概念,即。