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

JavaWeb 核心:Servlet 開發完整指南(生命週期、映射、配置與最佳實踐)

     編輯:Java 綜合教學

Servlet 簡介

Sun 定義的動態 Web 資源開發規範:實現 Servlet 介面(或繼承 HttpServlet),部署至 Web 容器(Tomcat/Jetty),容器管理生命週期並分發請求。

生命週期

  1. 實例化:首次請求或啟動時(<load-on-startup>)創建唯一實例。
  2. 初始化:調用 init(ServletConfig),僅一次。
  3. 服務:每請求調用 service(req, resp),HttpServlet 內部分發至 doGet/doPost 等。
  4. 銷毀:容器關閉/重載前調用 destroy(),釋放資源。

Eclipse 快速創建

  1. New → Dynamic Web Project。
  2. 右鍵包 → New → Servlet,填類名、URL 映射。
  3. IDE 自動生成類骨架並更新 web.xml(Servlet 3.0+ 可用 @WebServlet 註解替代)。

URL 映射規則

模式示例說明
精確路徑/servlet/Login完全匹配
目錄通配/user/*匹配 /user/ 任意子路徑
擴展名通配*.do匹配任意 .do 結尾
默認 Servlet/兜底處理靜態資源、無匹配路徑

優先級:精確 > 目錄 > 擴展名 > 默認。同級多個映射同一 Servlet 合法。

關鍵配置細節

  • <load-on-startup>1</load-on-startup>:啟動時加載,數字越小越早,用於初始化數據庫連接池、載入配置。
  • init-param:ServletConfig.getInitParameter() 讀取部署時參數。
  • 線程安全:單實例多線程,成員變量非線程安全,請求數據放局部變量或 ThreadLocal。

請求/響應核心 API

對象常用方法
HttpServletRequestgetParameter(), getParameterValues(), getInputStream(), getSession(), setAttribute()
HttpServletResponsesetContentType(), getWriter(), sendRedirect(), addCookie(), setStatus()

默認 Servlet 與靜態資源

Tomcat 內建 org.apache.catalina.servlets.DefaultServlet 映射 /,處理 HTML/CSS/JS/圖片等靜態文件,支援 listings 目錄瀏覽(生產關閉)。

避坑指南

  1. 編碼:request.setCharacterEncoding("UTF-8")(POST),response.setContentType("text/html;charset=UTF-8")。
  2. 轉發 vs 重定向:forward 同一請求、路徑不變;redirect 新請求、瀏覽器地址欄變化。
  3. Session 獲取:request.getSession() 自動創建,getSession(false) 僅獲取不創建。
  4. 文件上傳:需 multipart/form-data,Servlet 3.0+ 用 request.getPart(),舊版用 Apache Commons FileUpload。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved