Tomcat介绍在IDEA中创建JavaWeb工程

news/2024/7/27 7:32:01/文章来源:https://blog.csdn.net/qq_39921135/article/details/136433553

文章目录

  • 一、WEB服务器
    • 服务器概述
    • 使用Java代码手写web服务器
  • 二、服务器软件
    • Web服务器
    • 服务器软件的使用步骤
  • 三、Tomcat
    • Tomcat的下载
    • Tomcat的安装与卸载
    • Tomcat的启动与关闭
    • 常见问题
  • 四、新建Java Web项目并将项目部署到tomcat中
    • 新建Java Web项目
    • 将项目部署到Tomcat中
    • 出现的问题

一、WEB服务器

服务器概述

  • 指的也是计算机,只不过服务器要比我们日常使用的计算机大很多。

在这里插入图片描述

服务器,也称伺服器。是提供计算服务的设备。由于服务器需要响应服务请求,并进行处理,因此一般来说服务器应具备承担服务并且保障服务的能力。

服务器的构成包括处理器、硬盘、内存、系统总线等,和通用的计算机架构类似,但是由于需要提供高可靠的服务,因此在处理能力、稳定性、可靠性、安全性、可扩展性、可管理性等方面要求较高。

在网络环境下,根据服务器提供的服务类型不同,可分为:文件服务器,数据库服务器,应用程序服务器,WEB服务器等。

服务器只是一台设备,必须安装服务器软件才能提供相应的服务。


使用Java代码手写web服务器

主要使用到的是ServerSocketSocket

ServerSocketSocket是Java网络编程中的两个核心类,它们位于java.net包中,用于实现基于TCP协议的客户端-服务器通信模型。

  1. ServerSocket
    • ServerSocket类在Java中代表服务器端的套接字,它主要用于监听指定端口上的客户端连接请求。
    • 服务器程序通过实例化一个ServerSocket对象,并绑定到特定的端口号上,开始等待客户端的连接。
    • 当调用ServerSocket.accept()方法时,服务器会阻塞并等待客户端的连接。一旦有新的客户端连接请求到达,该方法会返回一个新的Socket对象,表示与该客户端建立了一个新的通信通道。
  2. Socket
    • socket又称套接字,应用程序通常通过套接字向网络发出请求或者应答网络请求。
    • Socket类则代表客户端或服务端的一个连接端点,即一个已建立连接的套接字。
    • Socket允许程序员将网络连接看作是另外一个可以读写字节的流(既然是流,就肯定有两端)。
    • Socket是建立网络连接时使用的,在连接成功时,应用程序两端都会产生一个socket实例。操作这个实例,完成所需的会话。
    • 在客户端,应用程序创建一个Socket对象,通常需要指定服务器的IP地址和端口号,然后通过调用Socket构造函数来发起对服务器的连接请求。
    • 建立连接后,客户端和服务端都可以通过各自对应的Socket对象进行读写操作,进行双向的数据传输。

总结来说,ServerSocket用于在服务器端创建并监听连接,而Socket则是在客户端和服务端之间实际数据交换的载体。通过这两种对象的协同工作,实现了Java网络编程中的可靠、面向连接的通信机制。

说明:以下代码大家不需要自己写,我们主要是通过代码,让大家了解到服务器针对HTTP协议的解析机制

/** 自定义web服务器*/
public class Server {public static void main(String[] args) throws IOException {ServerSocket ss = new ServerSocket(8080); // 监听指定端口System.out.println("server is running...");while (true){Socket sock = ss.accept();System.out.println("connected from " + sock.getRemoteSocketAddress());Thread t = new Handler(sock);t.start();}}
}class Handler extends Thread {Socket sock;public Handler(Socket sock) {this.sock = sock;}public void run() {try (InputStream input = this.sock.getInputStream();OutputStream output = this.sock.getOutputStream()) {handle(input, output);} catch (Exception e) {try {this.sock.close();} catch (IOException ioe) {}System.out.println("client disconnected.");}}private void handle(InputStream input, OutputStream output) throws IOException {BufferedReader reader = new BufferedReader(new InputStreamReader(input, StandardCharsets.UTF_8));BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(output, StandardCharsets.UTF_8));// 读取HTTP请求:boolean requestOk = false;String first = reader.readLine();if (first.startsWith("GET / HTTP/1.")) {requestOk = true;}for (;;) {String header = reader.readLine();if (header.isEmpty()) { // 读取到空行时, HTTP Header读取完毕break;}System.out.println(header);}System.out.println(requestOk ? "Response OK" : "Response Error");if (!requestOk) {// 发送错误响应:writer.write("HTTP/1.0 404 Not Found\r\n");writer.write("Content-Length: 0\r\n");writer.write("\r\n");writer.flush();} else {// 发送成功响应://读取html文件,转换为字符串InputStream is = Server.class.getClassLoader().getResourceAsStream("html/a.html");BufferedReader br = new BufferedReader(new InputStreamReader(is));StringBuilder data = new StringBuilder();String line = null;while ((line = br.readLine()) != null){data.append(line);}br.close();int length = data.toString().getBytes(StandardCharsets.UTF_8).length;writer.write("HTTP/1.1 200 OK\r\n");writer.write("Connection: keep-alive\r\n");writer.write("Content-Type: text/html\r\n");writer.write("Content-Length: " + length + "\r\n");writer.write("\r\n"); // 空行标识Header和Body的分隔writer.write(data.toString());writer.flush();}}
}

启动ServerSocket程序:

在这里插入图片描述

浏览器输入:http://localhost:8080 就会访问到ServerSocket程序

  • ServerSocket程序,会读取服务器上html/a.html文件,并把文件数据发送给浏览器
  • 浏览器接收到a.html文件中的数据后进行解析,显示以下内容

image-20221202171204705

现在大家知道了服务器是可以使用java完成编写,是可以接受页面发送的请求和响应数据给前端浏览器的,而在开发中真正用到的Web服务器,我们不会自己写的,都是使用目前比较流行的web服务器。如:Tomcat

在这里插入图片描述


二、服务器软件

服务器软件:基于ServerSocket编写的程序

  • 服务器软件本质是一个运行在服务器设备上的应用程序
  • 能够接收客户端请求,并根据请求给客户端响应数据

1530625192392


Web服务器

Web服务器是一个应用程序(软件),对HTTP协议的操作进行封装,使得程序员不必直接对协议进行操作(不用程序员自己写代码去解析http协议规则),让Web开发更加便捷。主要功能是"提供网上信息浏览服务"。

在这里插入图片描述

Web服务器是安装在服务器端的一款软件,将来我们把自己写的Web项目部署到Tomcat服务器软件中,当Web服务器软件启动后,部署在Web服务器软件中的页面就可以直接通过浏览器来访问了。


服务器软件的使用步骤

第1步:下载安装Web服务器软件

在这里插入图片描述

第2步:创建项目

或者直接新建一个项目文件夹,这里的baidu就是context root

在这里插入图片描述

然后再在项目文件夹里新建 WEB-INF文件夹,这个文件夹的名字是固定的

在这里插入图片描述

一个web项目最简单的形式就是两个文件夹

第3步:将静态资源部署到Web服务器上

然后将网页静态代码放在和WEB-INF同级的地方

image-20240303121233942

第4步:启动Web服务器使用浏览器访问对应的资源

在这里插入图片描述

浏览器输入:http://localhost:8080/baidu/index.html

在这里插入图片描述

一个Tomcat中可能会有很多个项目,但是她们的context root不能一样,通过ip地址+端口号就能定位到某台服务器的端口号。通过context root就能定位到某个项目。然后将资源响应给客户端。

上述内容在演示的时候,使用的是Apache下的Tomcat软件,至于Tomcat软件如何使用,后面会详细的讲到。而对于Web服务器来说,实现的方案有很多,Tomcat只是其中的一种,而除了Tomcat以外,还有很多优秀的Web服务器,比如:

Tomcat是轻量级的服务器,只支持少量的javaEE规范

而WebLogic、WebSphere支持全部的JavaEE规范,所以它们是重量级的服务器

在这里插入图片描述

Tomcat就是一款软件,我们主要是以学习如何去使用为主。


三、Tomcat

Tomcat服务器软件是一个免费的开源的web应用服务器。是Apache软件基金会的一个核心项目。由Apache,Sun和其他一些公司及个人共同开发而成。

由于Tomcat只支持Servlet/JSP少量JavaEE规范,所以是一个开源免费的轻量级Web服务器。

JavaSE:java标准版Java SE(Java Platform,Standard Edition)

JavaME:java小型版

JavaEE规范: JavaEE => Java Enterprise Edition(Java企业版)

avaEE规范就是指Java企业级开发的技术规范总和。包含13项技术规范:JDBC、JNDI、EJB、RMI、JSP、Servlet、XML、JMS、Java IDL、JTS、JTA、JavaMail、JAF

因为Tomcat支持Servlet/JSP规范,所以Tomcat也被称为Web容器(WebContainer)、Servlet容器(Servlet是基于Servlet规范开发出来的一种web资源)。Servlet程序需要依赖于支持Servlet这种Web服务器才可以运行。

JavaWeb程序需要依赖Tomcat才能运行。

Tomcat的官网: https://tomcat.apache.org/

image-20220824233903517


Tomcat的下载

直接从官方网站下载:https://tomcat.apache.org/download-90.cgi

在这里插入图片描述

Tomcat软件类型说明:

  • tar.gz文件,是linux和mac操作系统下的压缩版本
  • zip文件,是window操作系统下压缩版本(我们选择zip文件)

建议不要下载10,因为tomcat的版本是和JDK配套的。

在这里插入图片描述


Tomcat的安装与卸载

安装: Tomcat是绿色版,直接解压即安装

在E盘的develop目录下,将apache-tomcat-9.0.27-windows-x64.zip进行解压缩,会得到一个apache-tomcat-9.0.27的目录,Tomcat就已经安装成功。

image-20221202184545321

注意,Tomcat在解压缩的时候,解压所在的目录可以任意,但最好解压到一个不包含中文和空格的目录,因为后期在部署项目的时候,如果路径有中文或者空格可能会导致程序部署失败。

打开apache-tomcat-9.0.27目录就能看到如下目录结构,每个目录中包含的内容需要认识下

lib:tomcat本身也是用java和c写的程序,它本身也是一个项目,所以它本身也依赖一些jar包类。

在这里插入图片描述

bin:目录下有两类文件,一种是以.bat结尾的,是Windows系统的可执行文件,一种是以.sh结尾的,是Linux系统的可执行文件。

webapps:就是以后项目部署的目录

**卸载:**卸载比较简单,可以直接删除目录即可


Tomcat的启动与关闭

启动Tomcat

tomcat也是用java和C写的,所以它也需要有java虚拟机(Java的运行环境),因此需要告诉tomcat,当前电脑的JDK装在什么地方。配置JAVA_HOME即可。

  • 双击tomcat解压目录/bin/startup.bat文件即可启动tomcat

image-20221202183201663

注意: tomcat服务器启动后,黑窗口不会关闭,只要黑窗口不关闭,就证明tomcat服务器正在运行。

在这里插入图片描述

Tomcat的默认端口为8080,所以在浏览器的地址栏输入:http://127.0.0.1:8080 即可访问tomcat服务器

127.0.0.1 也可以使用localhost代替。如:http://localhost:8080

image-20221202183550682

  • 能看到以上图片中Apache Tomcat的内容就说明Tomcat已经启动成功

注意事项 :Tomcat启动的过程中,遇到控制台有中文乱码时,可以通常修改conf/logging.properties文件解决

在这里插入图片描述

关闭: 关闭有三种方式

1、强制关闭:直接x掉Tomcat窗口(不建议)

image-20221202184753808

2、正常关闭:bin\shutdown.bat

image-20221202185103941

3、正常关闭:在Tomcat启动窗口中按下 Ctrl+C

  • 说明:如果按下Ctrl+C没有反映,可以多按几次

常见问题

问题1:Tomcat启动时,窗口一闪而过

参考博客:【Tomcat】The CATALINA_HOME environment variable is not defined correctly-CSDN博客

问题2:端口号冲突

image-20220825084104447

  • 发生问题的原因:Tomcat使用的端口被占用了。

  • 解决方案:换Tomcat端口号

    • 要想修改Tomcat启动的端口号,需要修改 conf/server.xml文件

在这里插入图片描述

注: HTTP协议默认端口号为80,如果将Tomcat端口号改为80,则将来访问Tomcat时,将不用输入端口号。

localhost:80等价于localhost


四、新建Java Web项目并将项目部署到tomcat中

新建Java Web项目

在父项目中新建子模块

在这里插入图片描述

添加web模块

  • 方法一:

    旧版IDEA可以直接右击模块,然后选择Add framework support添加web应用程序即可。

    新版IDEA 2023.2以上版本 没有Add framework support选项。

    解决办法:选中模块,双击shift,选择操作,中文版 搜索添加框架支持,英文版 搜索Add framework support,即可使用

    在这里插入图片描述
    在这里插入图片描述

    删除jsp文件

    在这里插入图片描述

  • 方法二:根据如图操作

    在这里插入图片描述

    然后检查目录是否配置正确

    在这里插入图片描述

    最后再点击应用,ok即可

    在这里插入图片描述

然后在web这一级新建html文件

image-20240303133616190

在这里插入图片描述


将项目部署到Tomcat中

新建本地tomcat模板

image-20240303181916506

配置完成后直接应用,确认

此时再点上面的+,就会出现一个tomcat模板,点击即可

image-20240303182035529

配置tomcat

在这里插入图片描述

将项目部署到tomcat中

在这里插入图片描述

WAR (Web ARchive) 文件是一种归档格式,用于将Java Web应用程序的所有组件(包括HTML文件、图像、Java类、JSP等)打包在一起。"war exploded"意味着你的项目已经被展开或解压缩到其各个部分,而不是作为一个单独的WAR文件。这种部署方式的优点是可以提高性能,因为服务器可以直接访问已展开的文件,而不需要先解压缩WAR文件。此外,某些IDE(如IntelliJ IDEA)可能会更轻松地进行热部署(hot deployment),即在运行时更新代码。

另一种选项 “pro01-javaweb-begin:Web exploded” 可能是指整个项目(包括源代码和其他资源)被展开并部署到了服务器上。这可能意味着你的项目没有被打包成WAR文件,而是直接部署了源代码和资源。

在实际应用中,通常推荐使用WAR文件进行部署,因为它更容易管理和维护。然而,在开发过程中,使用 “war exploded” 部署可以提供更快的反馈循环,因为更改可以立即反映在运行的应用程序中,而无需重新打包和部署WAR文件。

image-20240303140810772

下面的应用程序上下文就是我们所说的context root

在这里插入图片描述

为了我们后面写代码比较方便,一般情况下直接改成一个 /

在这里插入图片描述

则网址上对应的项目名称就可以省略了

http://localhost:8080/baidu/index.html 也就变成了 http://localhost:8080/index.html

修改tomcat启动时打开浏览器时自动跳转到的页面的URL

如果只写一个/,那么表名我们访问的是index.html,如果没有,就会报404.

验证:

如果我们所输入的URL后面没有接上任何的资源,它默认情况下先访问index.html,如果index.html没有,就访问index.htm,如果第二个页面没有,就会尝试去访问index.jsp,如果也没有,就会报404.

在这里插入图片描述

如果想要让自己的页面加入进默认访问,只需要在中将自己的页面加入进去即可
当然,我们也可以加入到自己的项目里去,只需要将整个复制到自己Web项目的web/WEB-INF/web.xml文件中即可。

在这里插入图片描述
下图表示启动后自动打开的浏览器

在这里插入图片描述

当有更新操作时,执行重新部署

在这里插入图片描述

当IDEA失去焦点后,重新更新类和资源

在这里插入图片描述

当在IDEA中修改tomcat端口时,修改的其实也是tomcat的config文件

在这里插入图片描述

然后应用,确认即可

建议养成习惯,运行的时候都点debug模式而不是运行模式。

好处是:如果出问题了,就可以直接设置断点,直接调试。如果是运行模式,断点就没啥用了。

image-20240303161843149

tomcat运行成功,自动弹出浏览器窗口!

在这里插入图片描述

eclipse在配置tomcat,在部署的时候,它是正儿八经的把这个项目部署到webapp目录的,但idea是部署在pro-web\out\artifacts中,然后在tomcat中去指明,所部署的项目在这,所以原始的webapp目录基本上就没啥用了。

在这里插入图片描述


出现的问题

web目录前面没有蓝色小点

在这里插入图片描述

进入项目结构,然后跟着下图操作

在这里插入图片描述

注意web.xml的路径,中间的web非常容易掉!

image-20240303150950791

然后点击确定,应用即可。

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

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

webpack源码分析——tapable中before和stage如何改变执行顺序

一、Before用法 Before 用法 before 属性的值可以传入一个数组或者字符串,值为注册事件对象时的名称,它可以修改当前事件函数在传入的事件名称对应的函数之前进行执行。 示例 let hook new SyncWaterfallHook([arg1]);hook.tap(tap1, (arg)> {console.log(tap1…

农产品采购平台技术解析:Java+SpringBoot+Vue+MySQL

✍✍计算机毕业编程指导师 ⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流! ⚡⚡ Java、…

如何在 Mac 上成功轻松地恢复 Excel 文件

Microsoft Excel 的 Mac 版本始终略落后于 Windows 版本,这也许可以解释为什么如此多的用户渴望学习如何在 Mac 上恢复 Excel 文件。 但导致重要电子表格不可用的不仅仅是 Mac 版 Excel 的不完全稳定性。用户有时会失去注意力并删除错误的文件,存储设备…

049-WEB攻防-文件上传存储安全OSS对象分站解析安全解码还原目录执行

049-WEB攻防-文件上传&存储安全&OSS对象&分站&解析安全&解码还原&目录执行 #知识点: 1、文件上传-安全解析方案-目录权限&解码还原 2、文件上传-安全存储方案-分站存储&OSS对象 演示案例: ➢文件-解析方案-执行权限&…

C#,最小代价多边形三角剖分MCPT(Minimum Cost Polygon Triangulation)算法与源代码

1 最小代价多边形三角剖分算法 凸多边形的三角剖分是通过在非相邻顶点(角点)之间绘制对角线来形成的,这样对角线就不会相交。问题是如何以最小的代价找到三角剖分的代价。三角剖分的代价是其组成三角形的权重之和。每个三角形的重量是其周长…

vue在线查看pdf文件

1.引入组件 npm install --save vue-pdf2、pdf组件页面模板 <template><div class"scrollBox" ><el-dialog :visible.sync"open" :top"1" width"50%" append-to-body><div slot"title"><el…

EdgeX Foundry - 导出数据到 MQTT 服务

文章目录 一、概述1.安装说明2.安装 EMQX3.MQTTX 工具 二、安装部署1.docker-comepse2.修改配置3.启动 EdgeX Foundry4.访问 UI4.1. consul4.2. EdgeX Console 5.测试 EdgeX Foundry # EdgeX Foundryhttps://iothub.org.cn/docs/edgex/ https://iothub.org.cn/docs/edgex/devi…

Java8 CompletableFuture异步编程-入门篇

&#x1f3f7;️个人主页&#xff1a;牵着猫散步的鼠鼠 &#x1f3f7;️系列专栏&#xff1a;Java全栈-专栏 &#x1f3f7;️个人学习笔记&#xff0c;若有缺误&#xff0c;欢迎评论区指正 目录 前言 1、Future vs CompletableFuture 1.1 准备工作 1.2 Future 的局限性 …

小程序API能力集成指南——画布API汇总(四)

CanvasContext canvas 组件的绘图上下文。 方法如下&#xff08;3&#xff09;&#xff1a; scale CanvasContext.scale CanvasContext.scale(number scaleWidth, number scaleHeight) 功能描述 在调用后&#xff0c;之后创建的路径其横纵坐标会被缩放。多次调用倍数会相…

什么是VR虚拟现实|虚拟科技博物馆|VR设备购买

虚拟现实&#xff08;Virtual Reality&#xff0c;简称VR&#xff09;是一种通过计算机技术模拟出的一种全新的人机交互方式。它可以通过专门的设备&#xff08;如头戴式显示器&#xff09;将用户带入一个计算机生成的虚拟环境之中&#xff0c;使用户能够与这个虚拟环境进行交互…

基于“xxx” Androidx平台的驱动及系统开发 之 触摸板篇

目录 一、基于全志 A133 Android10平台&#xff0c;适配1366x768 - ilitek2511触摸1、原理图分析2、驱动移植与适配3、补丁和资源文件 二、基于瑞芯微 RK3566 Android11平台&#xff0c;适配GT9XX触摸1、原理图分析2、补丁及资源文件 三、遇到的问题与解决1、基于amlogic Andro…

Sodinokibi勒索病毒最新变种,勒索巨额赎金

前言 Sodinokibi勒索病毒在国内首次被发现于2019年4月份&#xff0c;2019年5月24日首次在意大利被发现&#xff0c;在意大利被发现使用RDP攻击的方式进行传播感染&#xff0c;这款病毒被称为GandCrab勒索病毒的接班人&#xff0c;在短短几个月的时间内&#xff0c;已经在全球大…

leetcode 3068. 最大节点价值之和【树形dp】

原题链接&#xff1a;3068. 最大节点价值之和 题目描述&#xff1a; 给你一棵 n 个节点的 无向 树&#xff0c;节点从 0 到 n - 1 编号。树以长度为 n - 1 下标从 0 开始的二维整数数组 edges 的形式给你&#xff0c;其中 edges[i] [ui, vi] 表示树中节点 ui 和 vi 之间有一…

Sentinel 面试题及答案整理,最新面试题

Sentinel的流量控制规则有哪些&#xff0c;各自的作用是什么&#xff1f; Sentinel的流量控制规则主要包括以下几种&#xff1a; 1、QPS&#xff08;每秒查询量&#xff09;限流&#xff1a; 限制资源每秒的请求次数&#xff0c;适用于控制高频访问。 2、线程数限流&#xf…

Linux系统——SElinux

目录 前言 一、SELinux 的作用及权限管理机制 1.SELinux 的作用 1.1DAC 1.2MAC 1.3DAC 和 MAC 的对比 2.SELinux 基本概念 2.1主体&#xff08;Subject&#xff09; 2.2对象&#xff08;Object&#xff09; 2.3政策和规则&#xff08;Policy & Rule&#xff09;…

数据结构/C++:二叉搜索树

数据结构/C&#xff1a;二叉搜索树 概念模拟实现结构分析插入中序遍历查找删除析构函数拷贝构造赋值重载递归查找递归插入递归删除 总代码展示 概念 二叉搜索树&#xff08;BST - Binary Search Tree&#xff09;是一种特殊的二叉树&#xff0c;每个顶点最多可以有两个子节点。…

scrapy 爬虫:多线程爬取去微博热搜排行榜数据信息,进入详情页面拿取第一条微博信息,保存到本地text文件、保存到excel

如果想要保存到excel中可以看我的这个爬虫 使用Scrapy 框架开启多进程爬取贝壳网数据保存到excel文件中&#xff0c;包括分页数据、详情页数据&#xff0c;新手保护期快来看&#xff01;&#xff01;仅供学习参考&#xff0c;别乱搞_爬取贝壳成交数据c端用户登录-CSDN博客 最终…

如何修炼成“神医”——《OceanBase诊断系列》之一

本系列是基于OcenaBase 开发工程师在工作中的一些诊断经验&#xff0c;也欢迎大家分享相关经验。 1. 关于神医的故事 扁鹊&#xff0c;中国古代第一个被正史记载的医生&#xff0c;他的成才之路非常传奇。年轻时&#xff0c;扁鹊是一家客栈的主管。有一位名叫长桑君的客人来到…

YOLOv8基础必需运用【目标检测、分割、姿势估计、跟踪和分类任务】

文章目录 前言1、环境安装2.1安装torch相关库2.2 获取yolov8最新版本&#xff0c;并安装依赖 3. 如何使用模型用于各种CV任务方式一&#xff1a;命令行形式方式二&#xff1a;python代码形式示例3.1 目标检测任务实现代码运行结果检测视频代码 3.2 分割任务实现代码运行效果分割…

蓝桥杯前端Web赛道-收集帛书碎片

蓝桥杯前端Web赛道-收集帛书碎片 题目链接&#xff1a;1.收集帛书碎片 - 蓝桥云课 (lanqiao.cn) 题目要求&#xff1a; 其实通过这个目标我们可以看出其实就是筛选出数组中多余的元素&#xff0c;那么我们可以通过includes来判断&#xff0c;当前数组是否已经拥有过这个碎片…