Servlet (接口)
↑ 實現
GenericServlet (抽象類) ← 實現 ServletConfig
↑ 繼承
HttpServlet (抽象類) ← 專為 HTTP 協議設計
| 接口 | 作用域 | 獲取方式 | 典型用途 |
|---|---|---|---|
| ServletConfig | 單個 Servlet | getServletConfig() | 讀取 <init-param> 初始化參數 |
| ServletContext | 整個 Web 應用 (Context) | getServletContext() | 全局配置、資源訪問、屬性共享、RequestDispatcher |
<servlet>
<servlet-name>MyServlet</servlet-name>
<servlet-class>com.example.MyServlet</servlet-class>
<init-param>
<param-name>configKey</param-name>
<param-value>configValue</param-value>
</init-param>
</servlet>
在 Servlet 中獲取:getServletConfig().getInitParameter("configKey") 或繼承 GenericServlet 後直接 getInitParameter("configKey")。
GenericServlet 實現中保存 config 引用,並調用無參 init() 供子類重寫。init(),而非帶參版本。HttpServlet 重寫 service,根據 req.getMethod() 分發到 doGet、doPost 等。service,則 doGet/doPost 失效,需自行分發。HttpServletRequest、HttpServletResponse。doGet、doPost、doPut、doDelete、doHead、doOptions、doTrace 對應 REST 風格。HEAD、TRACE 等方法默認行為。HttpServlet,重寫 doGet/doPost。init(),資源清理放在 destroy()。