了解并使用 jetty

news2024/12/25 8:43:35

前言

Jetty 是 Eclipse 基金会下的一个开源项目,它是一款用Java实现的、基于标准的HTTP服务器和JAVA Servlet容器。其优秀的性能和强大的可配置性使其在构建复杂和大规模的应用程序中非常受欢迎。在此篇文章中,我们将深入了解 Jetty,以及它如何支持我们构建出众的应用。

 一、Jetty 的核心特性

1.1.全面支持 Servlet API

Jetty 兼容JAVA Servlet API,这使得你可以在Jetty中部署所有的Servlet应用程序,接口兼容,无需做过多改动。

1.2.嵌入性

Jetty 可以被轻松地嵌入到各种应用和框架中,比如Spring Boot就自带Jetty作为其默认嵌入式服务器。这提供了极大的便利,满足了各种需要嵌入HTTP server的场景。

1.3.可配置性

Jetty 的大部分组件都提供了丰富的配置选项,让开发人员可以根据自己的需求对它进行定制。而且,Jetty 的源码公开,开发人员还可以通过修改源码来实现特定的需求。

1.4.性能优越

Jetty 对于网络连接和内存使用的高效管理,使得其在性能上非常突出。对于大量的并发连接,Jetty表现得十分出色。

二、怎么使用 jetty

1、去官网下载

Jetty Downloads | The Eclipse Foundation

2、下载 9.4.53 的

Jetty 9.4.53 是 2021 年 7 月发布的,这是一个已经经历了一段时间的稳定性测试和社区反馈的版本。 Jetty 9.4.53 是一个相对成熟且包含许多功能更新和 bug 修复的版本,在实际项目中应用是可取的,但是具体是否适合你的项目,还需要结合上述因素进行考虑。

下载完之后,解压出来就可以了。接下来就到 idea 中去配置就可以使用了 。

三、在 idea 新建 web 项目配置 jetty

1、新建一个 web 项目
 
 2、在 Aritfacts 里打成 war 包

3、添加 jetty 服务器
1)下载 jetty 插件

下载完之后,重启 idea 就 OK 啦!可能有时候 idea 没有那么快识别到 jetty 插件,可能重启了也找不到 jetty 或者 是灰色的,大家重启多两次就好了 。 

2)编辑配置

 

 3)添加 jetty 

如果找不到 jetty 的话,需要在 idea 下载一个插件:jetty

 4)  点击 local 添加 jetty 

 这是我们自己下载的 jetty 版本,如果没有显示 jetty 本地下载的服务器怎么办呢?

5)点击 Configure 配置

点击 jetty home ,选择自己下载解压后的 jetty 文件即可,然后点击 OK 就可以了。 

 6)在 Deployment 下,添加 Artifact

添加我们刚刚打成的 war 包。

 

任意选择一个就可以了,然后点击 OK!

 7)设置服务器的访问路径

这是配置完服务器后的路径:http://localhost:8080/ch01-1.0-SNAPSHOT/ 。

在访问路径 http://localhost:8080/ch01-1.0-SNAPSHOT/ 中,ch01-1.0-SNAPSHOT 是指你的web应用程序的上下文路径(context path),它是在web应用程序部署到服务器时指定的。通常,这个上下文路径和你的web应用程序的名称是一致的,但是也可以手动设置。

在这个访问路径的结尾处,还有一个斜杠“/”,表示这是一个目录,而不是一个具体的文件。如果你想访问这个目录下的具体文件,你需要在这个路径后面添加文件名。例如,如果你想访问 index.html 文件,你可以在路径后面添加 /index.html,使得访问路径变为 http://localhost:8080/ch01-1.0-SNAPSHOT/index.html。

所以,访问路径 http://localhost:8080/ch01-1.0-SNAPSHOT/ 后面会有一个斜杠和文件名,是因为这个路径指向的是一个目录,而不是一个具体的文件。

如果只要 http://localhost:8080/ 这个路径呢?

把这个勾上就可以了,这个是自定义上下文的根路径,勾选后 http://localhost:8080/ ,8080后面就不是 /ch01-1.0-SNAPSHOT/ 了,就变成 “/” 了。

 例如,如果你想访问 index.html 文件,你可以在路径后面添加 /index.html,使得访问路径变为 http://localhost:8080/index.html。

8)设置 On Update action 

 IntelliJ IDEA 内置的 Jetty Server 在“On 'Update' action”选项中提供的四个选项:

  1. Update resources:这个选项表示只更新静态资源(如 HTML、CSS、JavaScript 等),不重新加载应用程序。

  2. Update classes and resources:这个选项表示更新静态资源和 Java 类文件,但不重新加载应用程序。

  3. Redeploy:这个选项表示重新部署应用程序,包括重新加载所有的类和资源。

  4. Restart server:这个选项表示自动重启 Jetty Server,以加载新的应用程序代码和资源。

这四个选项可以根据你的需求选择不同的操作。如果你只修改了静态资源,可以选择 Update resources 或 Update classes and resources;如果你修改了 Java 类文件,可以选择 Update classes and resources;如果你修改了 Jetty Server 的配置文件或更新了 Jetty Server 本身,可以选择 Restart server。

大家就根据自己的需要去设置吧。

9)设置 On  frame deactivation

 IntelliJ IDEA 内置的 Jetty Server 在“On  frame deactivation”选项中提供的三个选项:

  1. Do nothing:这个选项表示不做任何操作,即不重新加载应用程序。

  2. Update resources:这个选项表示只更新静态资源(如 HTML、CSS、JavaScript 等),不重新加载应用程序。

  3. Update classes and resources:这个选项表示更新静态资源和 Java 类文件,但不重新加载应用程序。

这三个选项可以根据你的需求选择不同的操作。如果你只修改了静态资源,可以选择 Update resources;如果你修改了 Java 类文件,可以选择 Update classes and resources;如果你不想重新加载应用程序,可以选择 Do nothing。

四、运行 web 项目

这里使用的是 springmvc 来完成的 web 项目,就不讲解了,我给大家看运行的效果,大家可以在自己的项目中替换掉 tomcat ,使用 jetty 作为服务器,操作和用法都是一样的。

 五、Tomcat 和 Jetty 的区别

Tomcat 和 Jetty 都是 Java Web 应用程序服务器,它们的主要区别如下:

  1. 架构:Tomcat 和 Jetty 的架构不同。Tomcat 是一个传统的 Web 应用程序服务器,它的架构是基于 Servlet 和 JSP 规范的,它通过 Catalina 组件来处理 HTTP 请求和响应。Jetty 的架构是基于异步 IO 的,它通过 Jetty Server 组件来处理 HTTP 请求和响应。

  2. 性能:由于 Jetty 的架构是基于异步 IO 的,它比 Tomcat 在处理高并发请求时更加高效。Jetty 的性能优于 Tomcat,特别是在处理长连接和 WebSocket 请求时。

  3. 部署方式:Tomcat 和 Jetty 的部署方式不同。Tomcat 的部署方式是将 WAR 文件部署到 Tomcat 的 webapps 目录下,然后启动 Tomcat 服务器。Jetty 的部署方式是将 WAR 文件放到 Jetty 的 webapps 目录下,然后启动 Jetty 服务器。

  4. 功能:Tomcat 和 Jetty 的功能也有所不同。Tomcat 支持 JSP、Servlet、EL 等规范,以及一些常用的 Web 功能,如会话管理、安全性等。Jetty 也支持这些规范和功能,同时还支持 WebSocket、HTTP/2、异步 Servlet 等高级特性。

总的来说,Tomcat 是一个成熟的传统 Web 应用程序服务器,它的功能齐全,稳定性和安全性较高,适合用于大型 Web 应用程序的部署。Jetty 是一个轻量级、高性能的 Web 应用程序服务器,它的架构和设计更加先进,适合用于处理高并发请求、长连接和 WebSocket 等场景。

六、使用 Jetty 的好处

 使用 Jetty 作为 Web 应用程序服务器有以下几个好处:

  1. 高性能:Jetty 的架构是基于异步 IO 的,它的性能优于传统的 Web 应用程序服务器,特别是在处理高并发请求、长连接和 WebSocket 等场景时更加高效。

  2. 轻量级:Jetty 是一个轻量级的 Web 应用程序服务器,它的代码量较少,部署和启动速度更快,占用的内存资源更少。

  3. 易于嵌入:Jetty 可以被嵌入到其他 Java 应用程序中,例如 Eclipse、Maven、Hadoop 等。这使得 Jetty 更加灵活和易于集成。

  4. 支持异步 Servlet:Jetty 支持异步 Servlet,使得 Web 应用程序可以更好地处理异步请求和响应。

  5. 支持 WebSocket:Jetty 支持 WebSocket,可以更好地处理实时数据和消息推送等场景。

  6. 支持 HTTP/2:Jetty 支持 HTTP/2,可以更好地处理大量请求和响应,提高 Web 应用程序的性能和效率。

总的来说,Jetty 是一个高性能、轻量级、易于嵌入的 Web 应用程序服务器,具有先进的架构和设计,支持异步 Servlet、WebSocket、HTTP/2 等高级特性,适合用于处理高并发请求、长连接和实时数据等场景。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1127069.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

移远通信5G RedCap模组拿下首个中国移动5G物联网开放实验室5G及轻量化产品能力认证

10月21日,在2023世界物联网博览会期间,中国移动举办了以“智融万物 创见未来”为主题的物联网开发者大会暨物联网产业论坛。作为中国移动在物联网领域重要的合作伙伴,移远通信应邀参加论坛。 随着千行百业数智化进程的不断加速,5G…

【Java】Spring Cloud OAuth2之密码模式实战

Spring Cloud OAuth2 代码地址&#xff1a;https://gitee.com/kkmy/kw-microservices.git (又是一年1024&#xff0c;分享一下之前搭的OAuth2服务) OAuth2依赖版本 <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud…

Kubernetes 部署 kubeflow1.6.1

前言 安装前请注意捋清楚版本关系&#xff0c;如kubeflow版本对应的K8S版本及其相关工具版本等等 我们此处使用的是是kubeflow-1.6.1和K8s-v1.22.8 单机部署 部署K8S 初始化Linux 1.关闭selinux setenforce 0 && sed -i "s/SELINUXenforcing/SELINUXdisable…

flutter开发实战-hero动画简单实现

flutter开发实战-hero动画简单实现 使用Flutter的Hero widget创建hero动画。 将hero从一个路由飞到另一个路由。 将hero 的形状从圆形转换为矩形,同时将其从一个路由飞到另一个路由的过程中进行动画处理。 Flutter Hero动画 Hero 指的是可以在路由(页面)之间“飞行”的 widge…

应用在PC机中的低功耗触摸感应芯片

PC机一般指个人计算机。个人计算机是指一种大小、价格和性能适用于个人使用的多用途计算机。台式机、笔记本电脑、小型笔记本电脑、平板电脑以及超级本等都属于个人计算机。计算机的发展主要按照构成计算机的电子元器件来划分&#xff0c;共分为四个阶段&#xff0c;即电子管阶…

作为语雀的深度用户,谈谈语雀崩溃

文章目录 语雀简介语雀不可用接近8小时&#xff0c;我的感受谈谈云端存储的主要缺点其他软件如何解决云端存储的缺点总结 语雀简介 在数字化时代&#xff0c;云端服务扮演着关键的角色&#xff0c;为个人和企业提供了各种在线服务。其中&#xff0c;协作与知识管理工具变得越来…

自考02378《信息资源管理》第一章信息资源管理基础——思维导图

备战2024年04月自考科目02378《信息资源管理》第一章信息资源管理基础 思维导图如下&#xff1a; 以上便是本文的全部内容了&#xff0c;不知道对你有没有帮助呢。 我会认真写好每一篇文章&#xff0c;一直努力下去&#xff01;

从京东API接口,三个数字,带你认识真正的京东工业

京东工业赴港上市&#xff0c;带着非常优秀的成绩。 招股书显示&#xff0c;2022年实现交易额223亿元&#xff0c;营收141亿元&#xff0c;调整后净利润7亿元。短短六年时间&#xff0c;已成为中国工业供应链技术与服务市场领导者。 京东工业与传统工业品贸易商有何不同&#x…

【2021集创赛】Digilent杯二等奖:基于FPGA的动态视觉感知融合的运动目标检测系统

杯赛题目&#xff1a;Diligent杯&#xff1a;基于FPGA开源软核的硬件加速智能平台 参赛组别&#xff1a;A组 设计任务&#xff1a; 利用业界主流软核处理器(仅限于Cortex-M系列及 RISC-V系列)在限定的DIGILENT官方FPGA平台上构建SoC片上系统&#xff0c;在 SoC中添加面向智能应…

猿辅导发布博物馆新知计划,上线文物科普记录片《文物也有AB面》

博物馆里有什么&#xff1f;文物&#xff0c;可能是大多数人脱口而出的答案。博物馆拥有包罗万象的文物&#xff0c;不仅能够传递知识&#xff0c;提供艺术养分&#xff0c;更有助于青少年增强文化自信和文化传承的使命感。一座博物馆就像一所大学校&#xff0c;一个能够普及知…

lwip多网卡自适应选择

当系统中有多个网卡时&#xff0c;lwip会选择第一个网卡作为默认网卡&#xff0c;ping、tftp、iperf都会选择第一个网卡来进行&#xff0c;没有办法使用第二个网卡&#xff08;一些命令可以通过-i选项选择网卡&#xff0c;有些命令则没有提供&#xff09;&#xff0c;此时需要修…

NSS [SWPUCTF 2021 新生赛]PseudoProtocols

NSS [SWPUCTF 2021 新生赛]PseudoProtocols 先看题目&#xff0c;题目要求我们先找到hint.php。 看这个get请求头&#xff0c;我们先用php://filter协议读一波 得到提示&#xff0c;让我们前往/test2222222222222.php 源码如下 <?php ini_set("max_execution_time&qu…

Excel怎么合并单元格?这4个方法很简单!

“有没有朋友知道Excel合并单元格应该怎么操作呀&#xff1f;在制作工作报表中&#xff0c;需要对Excel单元格进行合并操作&#xff0c;但是我不太熟悉详细的操作&#xff0c;希望大家帮帮我&#xff01;” 在Excel中&#xff0c;合并单元格是一项常用的操作&#xff0c;用于改…

【Docker】Dockerfile使用技巧

开启Buildkit BuildKit是Docker官方社区推出的下一代镜像构建神器&#xff0c;可以更加快速&#xff0c;有效&#xff0c;安全地构建docker镜像。 尽管目前BuildKit不是Docker的默认构建工具&#xff0c;但是完全可以考虑将其作为Docker&#xff08;v18.09&#xff09;的首选…

基本的爬虫工作原理

爬虫是一种自动化程序&#xff0c;能够模拟人类的浏览行为&#xff0c;从网络上获取数据。爬虫的工作原理主要包括网页请求、数据解析和数据存储等几个步骤。本文将详细介绍爬虫的基本工作原理&#xff0c;帮助读者更好地理解和应用爬虫技术。 首先&#xff0c;爬虫的第一步是…

CTFHub-SSRF-读取伪协议

WEB攻防-SSRF服务端请求&Gopher伪协议&无回显利用&黑白盒挖掘&业务功能点-CSDN博客 伪协议有&#xff1a; file:/// — 访问本地文件系统 http:/// — 访问 HTTP(s) 网址 ftp:/// — 访问 FTP(s) URLs php:/// — 访问各个输入/输出流(I/O streams) dic…

NSS [NCTF 2018]滴!晨跑打卡

NSS [NCTF 2018]滴!晨跑打卡 很明显是sql注入 输入一个1&#xff0c;语句直接显示了&#xff0c;非常的真诚和坦率 简单尝试了一下&#xff0c;发现有waf&#xff0c;过滤了空格 拿burp跑一下fuzz&#xff0c;看看有多少过滤 过滤了# * - 空格那我们无法通过#或者–来注释掉…

如何在 Azure 容器应用程序上部署具有 Elastic Observability 的 Hello World Web 应用程序

作者&#xff1a;Jonathan Simon Elastic Observability 是提供对正在运行的 Web 应用程序的可见性的最佳工具。 Microsoft Azure 容器应用程序是一个完全托管的环境&#xff0c;使你能够在无服务器平台上运行容器化应用程序&#xff0c;以便你的应用程序可以扩展和缩减。 这使…

华为云 CodeArts Snap 智能编程助手 PyCharm 插件安装与使用指南

1 插件安装下载 1.1 搜索插件 打开 PyCharm&#xff0c;选择 File&#xff0c;点击 Settings。 选择 Plugins&#xff0c;点击 Marketplace&#xff0c;并在搜索框中输入 Huawei Cloud CodeArts Snap。 1.2 安装插件 如上图所示&#xff0c;点击 Install 按钮安装 Huawei Cl…

C#调用C/C++从零深入讲解

C#调用非托管DLL从零深入讲解 一、结构对齐 结构对齐是C#调用非托管DLL的必备知识。 在没有#pragma pack声明下结构体内存对齐的规则为: 第一个成员的偏移量为0,每个成员的首地址为自身大小的整数倍子结构体的第一个成员偏移量应当是子结构体最大成员的整数倍结构体总大小…