web.xml配置引數context-param和init-param的區別

悠悠隱於市發表於2011-04-13

web.xml配置引數context-param和init-param的區別

web.xml裡面可以定義兩種引數:
(1)application範圍內的引數,存放在servletcontext中,在web.xml中配置如下:

Xml程式碼
  1. <context-param>      
  2.            <param-name>context/param</param-name>      
  3.            <param-value>avalible during application</param-value>      
  4. </context-param>  
<context-param>   
           <param-name>context/param</param-name>   
           <param-value>avalible during application</param-value>   
</context-param>

 
(2)servlet範圍內的引數,只能在servlet的init()方法中取得,在web.xml中配置如下:

 

Xml程式碼
  1. <servlet>      
  2.     <servlet-name>MainServlet</servlet-name>      
  3.     <servlet-class>com.wes.controller.MainServlet</servlet-class>      
  4.     <init-param>      
  5.        <param-name>param1</param-name>      
  6.        <param-value>avalible in servlet init()</param-value>      
  7.     </init-param>      
  8.     <load-on-startup>0</load-on-startup>      
  9. </servlet>   
<servlet>   
    <servlet-name>MainServlet</servlet-name>   
    <servlet-class>com.wes.controller.MainServlet</servlet-class>   
    <init-param>   
       <param-name>param1</param-name>   
       <param-value>avalible in servlet init()</param-value>   
    </init-param>   
    <load-on-startup>0</load-on-startup>   
</servlet> 

 在servlet中可以通過程式碼分別取用:

Java程式碼 複製程式碼 收藏程式碼
  1. package com.wes.controller;       
  2.       
  3. import javax.servlet.ServletException;       
  4. import javax.servlet.http.HttpServlet;       
  5.       
  6. public class MainServlet extends HttpServlet{       
  7.       
  8.     public MainServlet(){       
  9.         super();       
  10.       }       
  11.     public void init() throws ServletException ...{       
  12.           System.out.println("下面的兩個引數param1是在servlet中存放的");       
  13.           System.out.println(this.getInitParameter("param1"));       
  14.           System.out.println("下面的引數是存放在servletcontext中的");       
  15.           System.out.println(getServletContext().getInitParameter("context/param"));       
  16.        }       
  17. }  
package com.wes.controller;    
   
import javax.servlet.ServletException;    
import javax.servlet.http.HttpServlet;    
   
public class MainServlet extends HttpServlet{    
   
    public MainServlet(){    
        super();    
      }    
    public void init() throws ServletException ...{    
          System.out.println("下面的兩個引數param1是在servlet中存放的");    
          System.out.println(this.getInitParameter("param1"));    
          System.out.println("下面的引數是存放在servletcontext中的");    
          System.out.println(getServletContext().getInitParameter("context/param"));    
       }    
}

 第一種引數在servlet裡面可以通過getServletContext().getInitParameter("context/param")得到

在JSP中可以用config.getServletContext().getInitParameter("context/param")得到

或者this.getServletContext().getInitParameter("context/param")


第二種引數只能在servlet的init()方法中通過this.getInitParameter("param1")取得.

相關文章