Servlet 定義與定位
Servlet 是平台無關、協定無關的伺服器端 Java 應用程式,運行於支援 Servlet 的 Web 容器 (如 Tomcat) 內,動態生成 Web 內容。非獨立應用,無 main(),由容器管理生命週期。
Servlet vs Applet vs CGI vs JSP
| Servlet | Applet | CGI | JSP |
| 執行端 | 伺服器 | 客戶端 | 伺服器 | 伺服器 |
| 圖形介面 | 無 | AWT/Swing | 無 | HTML 模板 |
| 效能模型 | 執行緒 | JVM 執行緒 | 進程 | 編譯為 Servlet |
| 資料共享 | 易 (屬性/Session) | 難 | 難 | 同 Servlet |
| 可移植性 | 高 (標準 API) | 高 | 低 (OS 相關) | 高 |
Servlet 優於 CGI:執行緒輕量、單實例多執行緒共享類別碼、豐富工具方法 (表單解析、Cookie、Session)、直接與容器互動、資料庫連線池易實作。
JSP 本質:HTML + 動態標籤,編譯為 Servlet,分離內容與邏輯,頁面設計更便利。
Servlet API 2.2 核心套件
javax.servlet (協定無關)
- 介面:
Servlet, ServletConfig, ServletContext, ServletRequest, ServletResponse, RequestDispatcher, SingleThreadModel。
- 類別:
GenericServlet, ServletInputStream, ServletOutputStream, ServletException, UnavailableException。
javax.servlet.http (HTTP 專用)
- 介面:
HttpServletRequest, HttpServletResponse, HttpSession, HttpSessionBindingListener。
- 類別:
HttpServlet, Cookie, HttpSessionBindingEvent, HttpUtils。
HTTP Servlet 開發基礎
- 繼承
HttpServlet。
- 覆寫
doGet() / doPost() (或 service())。
- 透過
HttpServletRequest 取得參數、Header、Session、Cookie。
- 透過
HttpServletResponse 設定 Header、Content-Type、輸出內容、Cookie。
生命週期方法
init(ServletConfig):容器載入時呼叫一次,初始化資源 (連線池、配置讀取)。
service(req, resp):每請求一次,分派至 doGet/doPost 等。
destroy():容器卸載前呼叫,釋放資源。
部署描述符 web.xml
<servlet>
<servlet-name>MyServlet</servlet-name>
<servlet-class>com.example.MyServlet</servlet-class>
<init-param>
<param-name>configFile</param-name>
<param-value>/WEB-INF/config.properties</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>MyServlet</servlet-name>
<url-pattern>/myservlet</url-pattern>
</servlet-mapping>
下一篇預告
將深入 HttpServletRequest/Response 細節、表單處理、Session 追蹤、Cookie 應用、Filter 與 Listener 機制。
- 上一篇文章: Java Applet 事件處理:滑鼠與鍵盤響應
- 下一篇文章: 鳳凰浴火:JBuilder 2006 重塑 Java IDE 霸主地位的關鍵一戰
Copyright ©
程式碼之家 All Rights Reserved