目錄
一、Jetty是什么?先看一個生活比喻
二、5分鐘快速入門:搭建你的第一個Jetty服務
步驟1:Maven依賴配置
步驟2:編寫簡易Servlet(廚房廚師)
步驟3:組裝服務器(餐廳開業準備)
三、核心組件拆解:Jetty的四大金剛
四、為什么選擇Jetty?對比傳統服務器
優勢場景:
適用情況舉例:
五、新手常見問題解答
一、Jetty是什么?先看一個生活比喻
假設你要開一家餐館(Web應用),可以選擇兩種經營模式:
-
??傳統大飯店模式??(如Tomcat):
有固定的前廳(HTTP連接器)、標準化廚房(Servlet容器)、甚至自帶停車場(JSP支持)。功能全面但體積較大。 -
??定制化私房菜模式??(即Jetty):
你可以自由組合用餐區(Connector)、廚房設備(Handler)、甚至選擇只做外賣(嵌入式部署)。特點是靈活輕便,按需配置。
??Jetty的本質??:一個模塊化的Java HTTP服務器和Servlet容器,既能獨立運行,也能輕松嵌入應用程序。
二、5分鐘快速入門:搭建你的第一個Jetty服務
步驟1:Maven依賴配置
<dependency><groupId>org.eclipse.jetty</groupId><artifactId>jetty-server</artifactId><version>11.0.15</version> </dependency>
步驟2:編寫簡易Servlet(廚房廚師)
public class HelloServlet extends HttpServlet {
? ? protected void doGet(HttpServletRequest req, HttpServletResponse resp) {
? ? ? ? resp.getWriter().print("🍜 Jetty服務已啟動!");
? ? }
}
步驟3:組裝服務器(餐廳開業準備)
public class JettyStarter {public static void main(String[] args) throws Exception {Server server = new Server(8080); // 在8080端口營業// 配置請求處理流水線ServletContextHandler handler = new ServletContextHandler();handler.addServlet(HelloServlet.class, "/hello");server.setHandler(handler);server.start();server.join(); ?// 保持營業狀態} }
運行后訪問?http://localhost:8080/hello 就能看到歡迎信息!?
三、核心組件拆解:Jetty的四大金剛
組件 | 類比 | 作用說明 | 常用配置示例 |
---|---|---|---|
??Server?? | 餐廳總經理 | 整個服務器的生命周期管理 | new Server(端口號) |
??Connector?? | 前臺接待員 | 處理網絡連接和協議解析 | ServerConnector 配置HTTPS |
??Handler?? | 部門經理 | 請求路由和業務邏輯分發 | ResourceHandler 處理靜態資源 |
??Servlet?? | 后廚工作人員 | 具體處理HTTP請求的業務邏輯 | 自定義doGet /doPost 方法 |
組件協作流程圖:
客戶端 → Connector接收 → Handler路由 → Servlet處理 → 返回響應
四、為什么選擇Jetty?對比傳統服務器
優勢場景:
-
??嵌入式開發??:像樂高一樣嵌入Spring Boot等框架
new SpringApplicationBuilder().sources(MyApp.class).web(WebApplicationType.NONE) // 禁用默認Tomcat.run(args);
-
??快速啟停??:啟動速度比傳統服務器快30%-50%
-
??按需加載??:最小化部署只需約2MB內存
適用情況舉例:
- 需要頻繁重啟的微服務
- IoT設備上的邊緣計算節點
- 需要WebSocket支持的實時聊天應用
五、新手常見問題解答
??Q:Jetty和Tomcat怎么選???
A:就像選擇咖啡機——Tomcat是功能齊全的全自動咖啡機,Jetty是支持DIY的膠囊咖啡機。需要快速標準化選前者,追求定制化選后者。
??Q:Jetty如何處理高并發???
Jetty使用NIO(非阻塞IO)模型,就像餐廳使用叫號系統:
傳統BIO模式 → 每個顧客一個服務員全程服務(資源浪費)
Jetty的NIO → 一個服務員管理多個顧客的就餐進度(高效復用)