| 目錄 | 用途 |
| bin | 啟動/關閉腳本(.sh/.bat)、環境變量配置 |
| conf | server.xml(連接器/主機/上下文)、web.xml(全局部署描述符)、tomcat-users.xml |
| lib | 容器運行依賴 JAR(servlet-api.jar, jsp-api.jar 等) |
| webapps | Web 應用部署目錄(WAR 包或展開目錄) |
| work | JSP 編譯生成的 Servlet 源碼/.class 文件,清空可清除緩存 |
| logs | 訪問日志、錯誤日志、Catalina 運行日志 |
手寫微型 Web 服務器:理解 HTTP 本質
public class MiniWebServer {
public static void main(String[] args) throws Exception {
ServerSocket ss = new ServerSocket(8765);
System.out.println("監聽 8765 端口...");
while (true) {
Socket client = ss.accept();
new Thread(() -> {
try (OutputStream os = client.getOutputStream();
BufferedReader br = new BufferedReader(new FileReader("D:/index.html"))) {
// 發送 HTTP 響應頭
os.write("HTTP/1.1 200 OK\r\n".getBytes());
os.write("Content-Type: text/html;charset=UTF-8\r\n".getBytes());
os.write("\r\n".getBytes()); // 空行分隔頭體
// 發送文件內容
String line;
while ((line = br.readLine()) != null) {
os.write(line.getBytes(StandardCharsets.UTF_8));
}
} catch (IOException e) { e.printStackTrace(); }
}).start();
}
}
}
瀏覽器訪問 https://localhost:8765/ 即可看到頁面。這演示了 HTTP 協議的請求-響應模型核心:解析請求行/頭 → 定位資源 → 構建響應頭/體 → 輸出流返回。
URL 與 URI 精準區分
URL (Uniform Resource Locator):統一資源定位符
協議://主機:端口/路徑?查詢參數#片段
例:https://example.com:8080/app/user?id=1#profile
URI (Uniform Resource Identifier):統一資源標識符(更廣泛)
包含 URL 和 URN (Uniform Resource Name,如 urn:isbn:0451450523)
關係:URL ⊂ URI
Web 應用標準目錄結構 (Servlet 規范)
my-webapp/
├── index.html, css/, js/, images/ # 靜態資源(可直接訪問)
├── WEB-INF/ # 受保護目錄(客戶端不可直接訪問)
│ ├── web.xml # 部署描述符(Servlet 3.0+ 可選)
│ ├── classes/ # 編譯後的類文件(包結構)
│ │ └── com/example/MyServlet.class
│ └── lib/ # 應用私有 JAR 包
└── META-INF/ # 元數據(可選)
關鍵規則:
WEB-INF/classes 和 WEB-INF/lib 自動在 Classpath 中
web.xml 定義 Servlet 映射、過濾器、監聽器、歡迎頁、錯誤頁等
- Servlet 3.0+ 支持註解配置 (
@WebServlet),可無 web.xml
Servlet 生命周期預覽
- 加載與實例化:容器啟動時或首次請求時(取決於
load-on-startup),通過反射創建實例
- 初始化
init(ServletConfig):僅執行一次,可讀取初始化參數、建立連接池
- 服務
service(ServletRequest, ServletResponse):每次請求調用,多線程並發執行,線程安全是開發者責任
- 銷毀
destroy():容器關閉/應用卸載前調用,釋放資源(關閉連接池、線程池)
開發環境搭建清單
- 安裝 JDK 8/11/17,配置
JAVA_HOME
- 下載 Tomcat 9/10,解壓,配置
CATALINA_HOME(可選)
- IDE 整合:IntelliJ IDEA / Eclipse 配置 Tomcat Server
- 建立動態 Web 項目,確保
web.xml 或註解配置正確
- 部署啟動,訪問
https://localhost:8080/your-app/ 驗證
掌握以上基石,才能在後續 Servlet API、Filter/Listener、Session 管理、異步處理、Spring MVC 原理等進階主題中遊刃有餘。
- 上一篇文章: Spring JavaConfig 完整指南:從 @Configuration 到混合 XML/Java 配置實戰
- 下一篇文章: JavaScript 核心知識體系總結:DOM 操作、事件機制與現代最佳實踐
Copyright ©
程式碼之家 All Rights Reserved