1. 程式人生 > >Servlet初始化引數(ServletConfig)與Servlet上下文初始化引數(ServletContext)區別

Servlet初始化引數(ServletConfig)與Servlet上下文初始化引數(ServletContext)區別

首先,這兩個都叫做初始化引數,只不過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。