PageContext ServletContext ServletConfig辨析
2015-10-17 10:16
435 查看
上面三个东西都是什么关系呀?
先看图
注意几点
1 GenericServlet有两个init方法#
2 GenericServlet既实现了ServletConfig方法,它自己由依赖一个ServletConfig(就是说,GenericServlet中有一个成员变量的类型是ServletConfig)
pageContext是在jsp中用的,可以获得页面范围内的一些数据。
ServletContext,里面存放的是Application范围内的参数
ServletConfig里面存放的是本serlvet内部的参数。
关于范围问题
我们看一小段代码
在我们的servlet里,在init或者doget/dopost里 写下面的代码:
当时的一个小疑问
我们知道,ServletConfig里面保存的是本servlet的参数。
那么我猜想,最终保存数据的那个实现了ServletConfig对象的类,里面肯定有一个成员变量是map类型的
上面的图里,genericServlet里面的getInitParameter调用的是ServletConfig的getInitParameter。
那数据到底在哪里呢?
换句话说,GenericServlet里面的ServletConfig到底是个什么类型呢?
开启debug模式
最终,我们能找到StandardWrapperFacade类,它实现了ServletConfig,并且,它包装了StandardWrapper,而StandardWrapper就是我们要找的终极目标。
/**
* The initialization parameters for this servlet, keyed by
* parameter name.
*/
protected HashMap<String, String> parameters = new HashMap<String, String>();
为什么会有一个facade。
这个东西叫门面模式。
这么吧,大家看看两个类各有多大,你就明白了。
感谢glt
glt?glt是谁?
我媳妇!
程序员有个媳妇多不容易呀,我也就只能在这里炫一下了
参考资料
web.xml中在Servlet中获取context-param和init-param内的参数
先看图
注意几点
1 GenericServlet有两个init方法#
2 GenericServlet既实现了ServletConfig方法,它自己由依赖一个ServletConfig(就是说,GenericServlet中有一个成员变量的类型是ServletConfig)
pageContext是在jsp中用的,可以获得页面范围内的一些数据。
ServletContext,里面存放的是Application范围内的参数
ServletConfig里面存放的是本serlvet内部的参数。
关于范围问题
我们看一小段代码
<servlet> <servlet-name>dd</servlet-name> <init-param> <param-name>glt</param-name> <param-value>dlf love glt</param-value> </init-param> <servlet-class>cdm.core.action.dd</servlet-class> </servlet> <servlet-mapping> <servlet-name>dd</servlet-name> <url-pattern>/servlet/dd</url-pattern> </servlet-mapping> <context-param> <param-name>dlf</param-name> <param-value>glt love dlf</param-value> </context-param>
在我们的servlet里,在init或者doget/dopost里 写下面的代码:
System.out.println("dd config "+servletConfig.getInitParameter("glt")); System.out.println(" context "+getServletContext().getInitParameter("dlf"));如果我们肯看一下上面的uml图,就能发现,我们直接在servlet里调用getInitParameter,和上面的servletConfig.getInitParameter是一样的。
当时的一个小疑问
我们知道,ServletConfig里面保存的是本servlet的参数。
那么我猜想,最终保存数据的那个实现了ServletConfig对象的类,里面肯定有一个成员变量是map类型的
上面的图里,genericServlet里面的getInitParameter调用的是ServletConfig的getInitParameter。
那数据到底在哪里呢?
换句话说,GenericServlet里面的ServletConfig到底是个什么类型呢?
开启debug模式
最终,我们能找到StandardWrapperFacade类,它实现了ServletConfig,并且,它包装了StandardWrapper,而StandardWrapper就是我们要找的终极目标。
/**
* The initialization parameters for this servlet, keyed by
* parameter name.
*/
protected HashMap<String, String> parameters = new HashMap<String, String>();
为什么会有一个facade。
这个东西叫门面模式。
这么吧,大家看看两个类各有多大,你就明白了。
感谢glt
glt?glt是谁?
我媳妇!
程序员有个媳妇多不容易呀,我也就只能在这里炫一下了
参考资料
web.xml中在Servlet中获取context-param和init-param内的参数
相关文章推荐
- 在 Unix 系统上查找数据的最佳工具和技巧
- 排列问题的其中一种解法
- python变量
- SpringMVC 配置过程及详解
- Android动画知识汇总
- 电话操作-JSON解析-图片下载工具类
- 3dmax处理模型的子对象和轴心
- iOS多线程之GCD-NSOperation对比总结
- IT资产管理必备的工具有哪些
- poj 1721 CARDS 洗牌机
- 你不知道的JavaScript--Item7 函数和(命名)函数表达式
- 从现在开始正式进入智能家居行业
- 你不知道的JavaScript--Item7 函数和(命名)函数表达式
- 简单实现利用EasyTouch实现物体的跳跃
- 中间件的日志类
- 简析安卓开发之activity(sumzom)
- 插入排序
- Android Api Demos登顶之路(101)View-->AutoComplete:Multiple items
- C语言——类型限定词
- IOS 中常用站位符