首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> J2EE

ServletConfig 與 ServletContext 參數配置與存取完整指南

     編輯:J2EE

四大作用域對比:生命週期與可見性

物件時間範圍空間範圍典型用途
HttpServletRequest 單次請求-回應(含 forward) 發起請求的客戶端 請求參數、暫存資料傳遞
HttpServletResponse 單次請求-回應 發起請求的客戶端 回應輸出、Header 設定
HttpSession 用戶會話期間(瀏覽器關閉/逾時失效) 同一用戶 購物車、登入狀態、用戶偏好
ServletConfig Servlet 實例化後 ~ 銷毀 僅該 Servlet 內部 單一 Servlet 專屬初始化參數(如附件儲存路徑)
ServletContext Web 應用啟動 ~ 關閉/重載 全應用所有元件 全域配置(字符集、資料庫連線資訊、共用常數)

參數配置:web.xml 範例

ServletContext 參數(全域)

<web-app>
  <init-param>
    <param-name>charset</param-name>
    <param-value>GB2312</param-value>
  </init-param>
</web-app>

父元素為 <web-app>,屬 Servlet 2.3+ 標準語法。

ServletConfig 參數(專屬)

<servlet>
  <servlet-name>GetAtt</servlet-name>
  <servlet-class>mail.GetAttServlet</servlet-class>
  <init-param>
    <param-name>absPath</param-name>
    <param-value>/usr/mail/ax/axman/Maildir/</param-value>
  </init-param>
</servlet>

父元素為 <servlet>,僅對應 Servlet 類可存取。

參數存取方式

在 Servlet 中

// ServletConfig
@Override
public void init(ServletConfig config) throws ServletException {
    this.config = config;
    String absPath = config.getInitParameter("absPath");
}

// ServletContext
ServletContext context = config.getServletContext();
String charset = context.getInitParameter("charset");

在 JSP 中

  • application 內建物件 → ServletContext
  • config 內建物件 → ServletConfig(但 JSP 編譯後的 Servlet 通常不在 web.xml 註冊,故較少用)

設計原則

  • 全域共用 → ServletContext(避免硬編碼)
  • 單一 Servlet 專屬、不可共享 → ServletConfig
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved