瀏覽器訪問服務器本質是資源請求過程。以輸入 www.a.com/index.html 為例,瀏覽器構造符合 HTTP 協議的請求報文:
GET /index.html HTTP/1.1
Accept-Language: zh-cn
Connection: Keep-Alive
Host: www.a.com
User-Agent: Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)
Accept-Encoding: gzip, deflate
通過 Socket 發送至服務器 80 端口。形象比喻:瀏覽器是主動發起請求的「客戶」,服務器是被動等待響應的「服務端」。
動態資源 = 未執行的 .class 文件,需經過運行時計算生成結果。類比「私人定制豪華車」:
核心技術:反射機制
Class.forName() 載入類 → newInstance() 創建實例反射雖有性能開銷,但實現了解耦——服務器無需預知具體處理類,支援熱部署與擴展。本文基於 Tomcat 實現分析,其他容器原理類同。
| 維度 | 靜態資源 | 動態資源 |
|---|---|---|
| 響應內容 | 預存文件 | 運行時計算結果 |
| 核心機制 | IO 流讀取 | 反射 + Servlet 規範 |
| 典型場景 | HTML/CSS/JS/圖片 | JSP/Servlet/Controller |