在Debug servlet时,右上侧的窗口有RequestFacade和ResponseFacade
来源:互联网 发布:阿里旺旺软件下载网页 编辑:程序博客网 时间:2024/04/29 13:01
在调试servlet程序时,遇到调试窗口右上侧显示RequestFacade和ResponseFacade,具体原因不知,所以在网上查到如下内容:
Tomcat 为什么使用Facade模式对Request对象进行包装?
为了屏蔽内部的catalina容器的相关方法,使用户免受非sevlet标准方法的干扰。
tomcat中request的包装结构:
其中org.apache.coyote.Request是应用层拿到的Request对象的底层实现,不便使用,
tomcat80/Request.java at trunk · apache/tomcat80 · GitHub
/**
*This is a low-level,effiecient representation of a server request. Most
*fields are GC-free, expensive operations are delayed until the user code
*needs the information.
*
*Processing is delegated to modules, using a hook mechanism.
*
*This class is not intended for user code - it is used internally by tomcat
*for processing the request in the most efficient way. Users ( Servlets ) can
*access the infromation using a facade,which provides the high-level view
*of the request.
*
*Tomcat defines a number of attributes:
*<ul>
*<li>"org.apache.tomcat.request" - allow access to the low-level
*request object in trusted applications
*</ul>
*@author James Duncan Davidson [duncan@eng.sun.com]
*@author James Todd [gonzo@eng.sun.com]
*@author Jason Hunter [jch@eng.sun.com]
*@author Harish Prabandham
*@author Alex Cruikshank [alex@epitonic.com]
*@author Hans Bergsten [hans@gefionsoftware.com]
*@author Costin Manolache
*@author Remy Maucherat
*/
org.apache.catalina.connector.Request类(tomcat80/Request.java at trunk · apache/tomcat80 · GitHub)
封装了org.apache.coyote.Request类,实现了HttpServletRequest接口,已经具备了实际
使用能力,不过它还包含了很多Catalina的方法,这些方法不应该暴露给应用层,以免引起与其他
容器实现的兼容性问题。
org.apache.catalina.connector.RequestFacade类(tomcat80/Request.java at trunk · apache/tomcat80 · GitHub)
实现了HttpServletRequest接口,并在其中包含了一个org.apache.catalina.connector.Request对象,
将所有HttpServletRequest接口的调用都代理给org.apache.catalina.connector.Request对象来处理,
这样就屏蔽了Catalina的相关的内部方法,使用户可以专注于servlet的标准方法。
说白了就是除了Servlet标准之外,tomcat自己的request对象内部还有很多成员变量和方法,
但是这些都是不需要暴漏出去的,所以搞了一层包装。
- 在Debug servlet时,右上侧的窗口有RequestFacade和ResponseFacade
- SetTimer在无窗口和有窗口线程的使用
- SetTimer在无窗口和有窗口线程的使用 .
- 去除CAJviewer右上侧的广告栏位去除CAJviewer右上侧的广告栏位
- vc触发右上的X及改变主窗口的窗口名
- 让你的iOS应用在不同状态(debug, release)有不同的图标和标题
- 在VC中,Debug版和Release版到底有什么实质上的区别?
- 在VC中,Debug版和Release版到底有什么实质上的区别?
- Static变量在Debug和Release模式下的初始化顺序偶有差异
- Servlet的debug
- 弹出窗口的Debug
- 弹出窗口的Debug
- MyEclipse、Eclipse在自动跳出ThreadPoolExecutor的debug窗口解决方法
- Silverlight实例教程 - Out of Browser的Debug和Notifications窗口
- Silverlight实例教程 - Out of Browser的Debug和Notifications窗口
- Silverlight实例教程 - Out of Browser的Debug和Notifications窗口
- 有状态和无状态的Servlet
- 关于有窗口句柄和无窗口句柄的截图
- KafkaConsumer-kafka消费者的Java客户端
- 1019. 数字黑洞 (20)
- Jmeter接口测试项目实战
- 西瓜书《机器学习》课后答案——chapter5_5.5
- fastcgi_finish_request() 遇到的坑
- 在Debug servlet时,右上侧的窗口有RequestFacade和ResponseFacade
- Palindrome Number
- 虚拟机的安装
- Tmk射气球
- Array类型
- 关于如何在Android源码目录中建立自己的C工程,并用mm命令单独进行该C工程模块的编译,以及Android.mk的使用介绍(2)
- FPGAtestbench中如何产生差分时钟
- 朗视科技笔试和面试的整理
- Codeforces 22B Bargaining Table