Sun 定義的動態 Web 資源開發規範:實現 Servlet 介面(或繼承 HttpServlet),部署至 Web 容器(Tomcat/Jetty),容器管理生命週期並分發請求。
<load-on-startup>)創建唯一實例。init(ServletConfig),僅一次。service(req, resp),HttpServlet 內部分發至 doGet/doPost 等。destroy(),釋放資源。web.xml(Servlet 3.0+ 可用 @WebServlet 註解替代)。| 模式 | 示例 | 說明 |
|---|---|---|
| 精確路徑 | /servlet/Login | 完全匹配 |
| 目錄通配 | /user/* | 匹配 /user/ 任意子路徑 |
| 擴展名通配 | *.do | 匹配任意 .do 結尾 |
| 默認 Servlet | / | 兜底處理靜態資源、無匹配路徑 |
優先級:精確 > 目錄 > 擴展名 > 默認。同級多個映射同一 Servlet 合法。
<load-on-startup>1</load-on-startup>:啟動時加載,數字越小越早,用於初始化數據庫連接池、載入配置。init-param:ServletConfig.getInitParameter() 讀取部署時參數。ThreadLocal。| 對象 | 常用方法 |
|---|---|
| HttpServletRequest | getParameter(), getParameterValues(), getInputStream(), getSession(), setAttribute() |
| HttpServletResponse | setContentType(), getWriter(), sendRedirect(), addCookie(), setStatus() |
Tomcat 內建 org.apache.catalina.servlets.DefaultServlet 映射 /,處理 HTML/CSS/JS/圖片等靜態文件,支援 listings 目錄瀏覽(生產關閉)。
request.setCharacterEncoding("UTF-8")(POST),response.setContentType("text/html;charset=UTF-8")。forward 同一請求、路徑不變;redirect 新請求、瀏覽器地址欄變化。request.getSession() 自動創建,getSession(false) 僅獲取不創建。multipart/form-data,Servlet 3.0+ 用 request.getPart(),舊版用 Apache Commons FileUpload。