Servlet初始化引數(ServletConfig)與Servlet上下文初始化引數(ServletContext)區別
阿新 • • 發佈:2019-02-17
首先,這兩個都叫做初始化引數,只不過servlet初始化引數才在DD配置中包含“init”一詞。
上下文初始化引數:
在<web-app>元素中,但不在具體的<servlet>元素中。比如:<web-app>
<context-param>
<param-name>foo</param-name>
<param-value>bar</param-value>
</context-param>
<!-- other stuff including servlet declarations-->
</web-app>
Servlet初始化引數:
在每個特定的Servlet的<servlet>元素中,比如:<servlet>
<servlet-name>BeerParamTests</servlet-name>
<servlet-class>TestInitParams</servlet-class>
<init-param>
<param-name>foo</param-name>
<param-value>bar</param-value>
</init-param>
</servlet>
在Servlet程式碼中呼叫初始化引數:
上下文初始化引數呼叫: getServletContext().getInitParameter("foo"); 對Web應用的所有servlet和JSP都可用。Servlet初始化引數呼叫:getServletConfig().getInitParameter("foo"); 只對配置了<init-param>的相應servlet可用。
注意:每個servlet有一個ServletConfig,每個Web應用有一個ServletContext.要把初始化引數認為是部署時常量,可用在執行時得到這些初始化引數,但不能設定初始化引數,根本沒有setInitParameter().如果修改XML來改變一個初始化引數的值,只有當Web應用重新部署時Web應用其他部分才會看到,因為servlet只會初始化一次,在初始化時會為它提供ServletConfig和ServletContext。