从零开始理解Jetty:轻量级Java服务器的入门指南

createh52周前 (05-24)技术教程5

目录


一、Jetty是什么?先看一个生活比喻

二、5分钟快速入门:搭建你的第一个Jetty服务

步骤1:Maven依赖配置

步骤2:编写简易Servlet(厨房厨师)

步骤3:组装服务器(餐厅开业准备)

三、核心组件拆解:Jetty的四大金刚

四、为什么选择Jetty?对比传统服务器

优势场景:

适用情况举例:

五、新手常见问题解答



一、Jetty是什么?先看一个生活比喻

假设你要开一家餐馆(Web应用),可以选择两种经营模式:

  1. 传统大饭店模式(如Tomcat):
    有固定的前厅(HTTP连接器)、标准化厨房(Servlet容器)、甚至自带停车场(JSP支持)。功能全面但体积较大。
  2. 定制化私房菜模式(即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?对比传统服务器

优势场景:

  1. 嵌入式开发:像乐高一样嵌入Spring Boot等框架
  2. new SpringApplicationBuilder() .sources(MyApp.class) .web(WebApplicationType.NONE) // 禁用默认Tomcat .run(args);
  3. 快速启停:启动速度比传统服务器快30%-50%
  4. 按需加载:最小化部署只需约2MB内存

适用情况举例:

  • 需要频繁重启的微服务
  • IoT设备上的边缘计算节点
  • 需要WebSocket支持的实时聊天应用

五、新手常见问题解答

Q:Jetty和Tomcat怎么选?
A:就像选择咖啡机——Tomcat是功能齐全的全自动咖啡机,Jetty是支持DIY的胶囊咖啡机。需要快速标准化选前者,追求定制化选后者。

Q:Jetty如何处理高并发?
Jetty使用NIO(非阻塞IO)模型,就像餐厅使用叫号系统:

传统BIO模式 → 每个顾客一个服务员全程服务(资源浪费)

Jetty的NIO → 一个服务员管理多个顾客的就餐进度(高效复用)

相关文章

java初学者应该怎么学?

随着IT行业的发展,需要java程序员的公司也是越来越多,而且java行业的高薪资也让越来越多的人想要转行或者是学习java知识,那么作为java初学者,我们要怎么学习java知识呢?由于我们是其它行...

自学java开发攻略,想做程序员的必备攻略?

背景现阶段,随着互联网的快速发展,程序员这个行业越来月吃香,不仅仅是因为科技先进,说出去很牛逼,让别人产生崇拜,主要原因是程序员行业薪资待遇好,相比国内其他行业,程序员的薪资待遇是羡慕了很多人呢!于是...

Java中的泛型:从入门到精通

Java中的泛型:从入门到精通在Java的世界里,泛型就像一把神奇的钥匙,它不仅能帮助我们写出更简洁、更安全的代码,还能显著提升程序的健壮性。今天,我们就来揭开泛型的神秘面纱,看看它是如何让Java编...

Java入门第一天

#java##java知识##java源码##java 编程#Java是一种广泛使用的计算机编程语言,具有跨平台、面向对象、安全性高等特点简介就到此为止了来正文下载javahttps://ww...