日期:2014-05-18  浏览次数:20717 次

请教个基础的问题
关于ServletConfig和ServletContext 还有web.xml里的<init-param>和<context-param>

看书上的例子
"假设某个Servlet要被多个公司去使用……"这里用了<init-param>标签
<init-param>标签是嵌套在<servlet>里面的 那这个初始化参数应该是专属于这个servlet的 没错吧?

然后书上又举了一个例子
“例如,一个web应用程序中的多个Servlet程序都要输出当前站点的公司名称,而这个web应用程序可能会交给多个公司去使用,如果将公司名称作为web应用程序的初始化参数进行设置……"这里用了<context-param>标签
<context-param>标签是<web-app>的子元素 那这个初始化参数似乎是这个web应用程序下所有servlet共享的参数 是这样吗?

但是
<init-param>里的参数是通过调用getServletConfig().getInitParameterNames()得到 
<context-param>里的参数是通过调用getServletContext().getInitParameterNames()得到 

书上说"每个web应用程序(Servlet容器)都用一个各自的ServletContext对象来表示,ServletConfig对象中包含了ServletContext对象的引用……”“ServletContext对象被包含在ServletConfig对象中”

这个servletconfig指的是什么?ServletContext跟ServletConfig谁的概念比较大?
看文字描述似乎ServletConfig要大一点 那为什么getServletConfig().getInitParameterNames()方法得到的却是针对特定Servlet的参数 
根据方法来判断ServletContex似乎要大一些 那为什么ServletContex要包含在ServletConfig里面而不是ServletConfig杯包含在ServletContex里面

请指点迷津

------解决方案--------------------
ServletConfig对象中包含了ServletContext对象的引用

只是一个引用。2个侧重点不同
ServletContext 更大一些。

------解决方案--------------------
ServletConfig的使用是
JRun在初始化的时在servlet里传递设定信息。
ServletConfig包含ServletContext对象
------解决方案--------------------
ServletConfig对象中包含了ServletContext对象的引用

只是一个引用。2个侧重点不同
ServletContext 更大一些。 

再补充点:
其中,ServletConfig对象侧重于web应用环境的配置,比如数据库配置,一些恒量的文件路径等等。
而ServletContext是web运行中当前状态或者行为的上下文环境。

一般ServletConfig会贯穿于整个应用,整个操作流程
ServletContext 只是局部的某一时刻的