因为我是Servlet编程的新手,所以我可能会问一个基本的问题.
我正在编写一个应用程序,其中Filter从servlet获取响应,并使用它进行一些计算.我发现我需要一个包装类来捕获响应.
我现在的问题是为什么需要包装?提前致谢!
Rav*_*edi 13
1)让我们先了解Request和Request Filter工作:
当,让我们说客户端,向servlet发出请求时,它通过容器.容器决定Request需要转发到哪个servlet .这意味着,集装箱完全可以控制.
容器控件使得实现请求过滤器变得容易,因为我们可以让容器知道Request应该首先过滤然后过滤到servlet.因为容器完全可以控制.因此,实现请求过滤很容易.
2)现在让我们了解如何Response与Response Filter工作:
当容器调用Servlet服务方法时,它将2个对象传递给方法,Request并且Response.
这只是意味着Servlet完全可以将响应发送回客户端.怎么样 ?
因为Response对象有指针到Output Stream Writer对象.这意味着,一旦Servlet的处理完请求,它将直写Response使用回客户端指针到Output Writer Stream对象.因此,Servlet不会等待任何人(中间人喜欢过滤器)并直接为客户服务.到那时,干预将为时已晚.
那么,解决方案是什么?
Wrapper 是我们的解决方案
包装器如何工作?
因此,在容器将实际Request和Response对象传递给Servlet之前,我们将包装我们的Response对象,然后将Real Request和Wrapped Response对象发送到Servlet服务方法.
所以现在,Servlet有指向我们Wrapped Output Stream Writer对象的指针而不是Real Response Output Stream Writer对象.因此,当Servlet完成请求时,它会将响应写入我们Wrapped Stream,然后我们Wrapped Response Object将回写Real Response Writer Stream.
:这个故事的寓意使用wrapper与交易时Response.Request不需要包装概念.
| 归档时间: |
|
| 查看次数: |
4877 次 |
| 最近记录: |