web.xml 中可定義兩種範圍的初始化參數:
儲存在 ServletContext 中,全應用程式可見。
<context-param>
<param-name>context/param</param-name>
<param-value>avalible during application</param-value>
</context-param>
僅在對應 Servlet 的 init() 方法中可取得。
<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>
package com.qisentech.controller;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
public class MainServlet extends HttpServlet {
public void init() throws ServletException {
// 取得 Servlet 專屬 init-param
System.out.println(this.getInitParameter("param1"));
// 取得全域 context-param
System.out.println(getServletContext().getInitParameter("context/param"));
}
}
| 參數類型 | 定義位置 | 取得方法 | 可見範圍 |
|---|---|---|---|
| context-param | <web-app> 直屬 | getServletContext().getInitParameter() | 整個 Web 應用 |
| init-param | <servlet> 內部 | this.getInitParameter() | 僅該 Servlet |
正確區分兩者範圍,避免在錯誤生命週期或錯誤上下文中取值導致 null。