当前位置: 首页 > news >正文

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

目录

一、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等框架

    new SpringApplicationBuilder().sources(MyApp.class).web(WebApplicationType.NONE) // 禁用默认Tomcat.run(args);
  2. ​快速启停​​:启动速度比传统服务器快30%-50%

  3. ​按需加载​​:最小化部署只需约2MB内存

适用情况举例:

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

五、新手常见问题解答

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

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

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

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

相关文章:

  • JavaScript入门【2】语法基础
  • MATLAB学习笔记(六):MATLAB数学建模
  • Redis Sentinel如何实现高可用?
  • 机器学习——逻辑回归
  • C/C++之内存管理
  • 网络编程中的直接内存与零拷贝
  • 强化学习赋能医疗大模型:构建闭环检索-反馈-优化系统提升推理能力
  • chrome 浏览器插件 myTools, 日常小工具。
  • 【C++】string的使用【上】
  • spring -MVC-02
  • 相机Camera日志分析之十一:高通相机Camx hal预览1帧logcat日志process_capture_result详解
  • (C语言)超市管理系统 (正式版)(指针)(数据结构)(清屏操作)(文件读写)(网页版预告)(html)(js)(json)
  • Node.js 源码概览
  • 使用 Python 连接 Oracle 23ai 数据库完整指南
  • 黑马点评-用户登录
  • Java 类和对象
  • 模型量化AWQ和GPTQ哪种效果好?
  • Kafka 生产者工作流程详解
  • TransmittableThreadLocal使用场景
  • 「Mac畅玩AIGC与多模态41」开发篇36 - 用 ArkTS 构建聚合搜索前端页面
  • 多少Moreless:向世界展示现代中式家具的生活美学
  • 标普500指数连涨四日,大型科技股多数下跌
  • 外交部:国际社会广泛理解和支持中方不同意台参加世卫大会的决定
  • 中央宣传部、全国妇联联合发布2025年“最美家庭”
  • 知名猎头公司创始人兼首席执行官庄华因突发疾病逝世,享年62岁
  • 旭辉控股集团主席林中:债务重组是活下来的前提,自营开发业务收缩至少数核心城市