SSM开发(一)JAVA,javaEE,spring,springmvc,springboot,SSM,SSH等几个概念区别

目录

JAVA

框架

javaEE

spring

springmvc

springboot

SSM

SSH

maven


JAVA

  • 一种面向对象、高级编程语言,Python也是高级编程语言;
  • 不是框架(框架:一般用于大型复杂需求项目,用于快速开发)
  • 具有三大特性,所谓Java编程也始终是围绕三大特性进行的
  • Java提供了基本的语言特性和类库,可以在各种操作系统和硬件平台上运行
  • 目前互联网大小厂等绝大部分都在使用Java进行企业级开发(少部分也有用Python的)

框架

  • 什么是框架

    所谓框架,其实就是一个半成品的软件项目,是一个可复用的设计构件。我们可以在这些半成品的基础之上,来开发我们自己的应用

javaEE

  • Java EE是Java平台的一个扩展,一种框架,专门用于开发企业级应用程序。Java EE适用于开发大型、分布式、可扩展的企业级应用程序,如企业级Web应用
  • 提供了分布式计算、事务处理、安全性等一系列企业级功能(Java本身不提供Java EE中的企业级功能和组件,但它可以用于开发这些功能,尽管这不是最常见的使用方式。)
  • Java EE包括EJB(Enterprise JavaBeans)、JPA(Java Persistence API)、JMS(Java Message Service)等组件,支持Web应用程序和分布式系统的开发。
  • 与Java区别:Java EE需要使用Java编程语言进行开发,但Java编程语言并不一定要用于开发Java EE应用程序
  • 适用场景: javaee适用于企业级应用程序‌

spring

  • 一种用于构建企业级Java应用程序的开源应用程序框架,Spring自2002年诞生至今,已有近20年的历史. Spring 致力于 JavaEE 应用各层的解决方案(表现层、业务逻辑层、持久层,但 Spring 并不是要取代那些已有的优秀框架,而是可以高度开放的与其它优秀框架无缝整合)
  • Spring 是一个分层的 full-stack(一站式)轻量级框架,以 Ioc(Inversion of Control,控制反转)和  AOP(Aspect Oriented Programming,面向切片编程)为内核,使用简单的 JavaBean 来完成以前只能由 EJB(Enterprise Java Beans)完成的工作,取代了臃肿、低效的 EJB。

  • 降低了使用 JavaEE API 的难度。Spring对JavaEE开发中难用的一些API进行了封装,降低了这些API的使用难度。

  • 用于开发Java应用程序的各个方面,包括依赖注入(Dependency Injection)、面向切面编程(Aspect-Oriented Programming)、事务管理、数据访问、Web开发等

对比普通的java程序与Spring 中创建对象:

普通的Java程序:开发者需要使用关键字new显式地在代码中创建和初始化对象。 List list = new ArrayList();

在Spring框架中,对象的创建由Spring容器负责。开发者只需在配置文件或使用注解的方式中声明对象的依赖关系,Spring容器会根据配置信息自动创建和管理对象的生命周期。

  • Spring简化了应用系统的开发,IoC和AOP是它的两大核心理念。IoC容器用来管理组件和注入依赖,AOP进一步降低了模块的耦合性,提高了重用性和开发效率。

  • 很容易和其他库整合,如与数据库处理的相关框架mybatis整合

  • JavaEE框架与Spring框架的对比

相同点: 都是流行的用于Java开发的框架

不同点对比:

JavaEE适用于大型企业级应用程序,而Spring更适合轻量级、灵活的应用程序

    依赖项

    • JavaEE依赖于JEE规范(如EJB、JPA等),需要服务器支持。
    • Spring是一个轻量级的框架,依赖较少,可以在非JEE环境中使用。

    复杂性

    • JavaEE的模块化架构可能使其更复杂,尤其是对于大型应用程序。
    • Spring的IoC容器简化了应用程序开发,使其更容易管理复杂性。

    性能

    • JavaEE通常比Spring更快,因为它基于更稳定的规范。
    • 对于小型应用程序,Spring的性能足以满足大多数需求。

    • Spring框架具有以下核心特点

    轻量级:Spring框架采用了轻量级的设计思想,它不依赖于庞大的第三方库或容器。Spring的核心库非常精简,只提供了基本的功能和特性,使得应用程序可以快速启动和运行。

    控制反转(IoC)和依赖注入(DI):Spring框架通过依赖注入实现了对象之间的松耦合。开发者无需自己管理对象的创建和组装,而是通过配置或注解的方式,由框架负责将依赖关系注入到对象中。这种松耦合的设计使得代码更具可测试性、可维护性和可扩展性

    面向切面编程(AOP):Spring框架提供了对面向切面编程的支持。AOP允许开发者在不修改原有代码的情况下,通过定义切面来插入横切关注点,例如日志记录、事务管理等。这种机制提高了代码的模块化和重用性,同时将核心业务逻辑与横切关注点分离开来。

    容器管理:Spring框架提供了一个容器(ApplicationContext)来管理应用程序中的对象。容器负责创建、配置和管理对象的生命周期,包括依赖注入、对象的初始化和销毁等。通过容器的管理,开发者可以更方便地管理和组织应用程序的组件。

    综合的解决方案:Spring框架提供了一系列的模块和工具,涵盖了各个方面的应用开发需求。例如,Spring MVC用于构建Web应用程序,Spring JDBC用于简化数据库访问,Spring Security用于身份验证和授权等。这些模块能够根据项目的需求进行选择和集成,提供了一套综合的解决方案。

    高度可扩展:Spring框架具有高度的可扩展性,开发者可以通过扩展或自定义各种组件来满足特定的需求。Spring提供了扩展点和插件机制,使得开发者可以根据项目的要求进行定制和扩展,而无需改变框架的核心代码。

    springmvc

    • Spring MVC(Model-View-Controller)是Spring框架中的一部分,用于构建基于Java的Web应用程序
    • 是一个基于MVC设计模式的Web框架,提供了一种结构化的方式来开发Web应用程序,使开发人员能够更好地管理请求、处理逻辑和呈现视图。
    • 与spring的关系:Spring MVC是Spring框架的一部分,SpringMVC是Spring框架中的一个子模块,所以SpringMVC和Spring整合时更加简单,配置也更加容易。
    • SpringMVC的缺点

      servlet API耦合难以脱离容器独立运行(为了运行代码,必须安装web容器)

      太过于细分,开发效率低(比如,bean需要挨个配置)

    • 核心组件

    注:为了解耦,通常又把中间件划分为三层 即:表现层(控制层),业务逻辑层,数据访问层

    Model(模型,简单理解为逻辑处理):模型代表应用程序的数据和业务逻辑。它可以是POJO(Plain Old Java Object)或者通过持久化框架与数据库交互。模型通常包含应用程序的状态和数据,以及处理这些数据的方法。
    View(视图,简单里面为页面):视图负责呈现模型的数据给用户。它可以是一个JSP页面、Thymeleaf模板、HTML页面或其他类型的视图技术。视图负责展示数据给用户,并与用户进行交互。
    Controller(控制器,简单理解为提供http(s)接口):控制器是模型和视图之间的协调者。它接收用户的请求,并根据请求的内容选择适当的模型和视图进行处理。控制器通常包含处理请求的方法,可以通过注解或配置进行映射。

    springboot

    • 一个用于简化和加速基于Spring框架的应用程序开发的开源框架
    • 与Java的关系: 一种全新的框架(Java程序课程设计时也可以用springboot,但属于“杀鸡焉用牛刀”)
    • 与spring的关系:Springboot是建立在Spring框架之上的(简单理解为,springboot ~= spring + springmvc + web服务器 等等) 

     SpringMVC是基于spring的一个MVC框架。

     springboot的基于spring的条件注册的一套快速开发整合包

    • 与springmvc的关系

    1、Spring MVC是Spring框架的一部分,而Spring Boot则是建立在Spring框架之上的。Spring Boot可以与Spring MVC一起使用,以简化Spring MVC应用程序的配置和部署。
    2、Spring Boot内置了Tomcat、Jetty等Web服务器,因此可以直接运行Spring MVC应用程序,无需手动配置和部署外部服务器。
    3、Spring Boot提供了自动配置机制,可以根据应用程序的依赖和配置情况,自动配置Spring MVC的相关组件和功能(大大减少了选项配置),简化了配置过程。
    4、Spring Boot还提供了许多与Web开发相关的功能和插件,例如Spring Boot Starter Web,用于自动配置Web开发所需的依赖项。

    二者区别:

    1、Spring Boot是一个全新的框架,旨在简化Spring应用程序的开发和部署,提供了自动配置、内嵌服务器等特性。而Spring MVC是Spring框架的一部分,专注于构建Web应用程序。
    2、Spring Boot关注于整个应用程序的配置和部署,提供了一种约定优于配置的方式,使得开发者可以更快地开发应用程序。而Spring MVC关注于处理Web请求和响应,提供了一种基于MVC模式的架构。
    3、Spring Boot可以与Spring MVC一起使用,但它并不局限于Spring MVC,也可以与其他Spring模块(如Spring Data、Spring Security等)以及第三方库进行集成。
    4、Spring Boot提供了许多开箱即用的功能和插件,使得开发人员可以更专注于业务逻辑的实现,而Spring MVC则提供了一套Web开发的基础架构和规范

    • 提供了一个约定大于配置的方式,旨在最小化开发人员在配置方面的工作量,提高开发效率。

    约定大于配置:

            传统的软件开发往往需要大量的配置文件和手动配置步骤,开发人员需要详细配置各种参数和选项,以满足应用程序的需求。这种方式需要开发人员具备熟练的配置技能,并且容易出现配置错误和冲突。比如,springmvc 开发时需要多个配置文件,极其容易出错,而且程序部署时需要web容器如tomcat来部署运行。

            约定大于配置的方式则通过事先定义一些默认约定和规则,使得开发人员可以遵循这些约定而不需要进行显式的配置。这样可以大大简化配置的过程(配置文件数量大大减少了,Spring Boot提供了一系列的默认约定和自动配置机制,开发人员只需要按照这些约定编写代码和组织项目结构,就能够快速启动应用程序,无需手动配置大量的Spring选项),减少出错的可能性(如:版本冲突大大减少了),并提高开发效率。例如,Spring Boot默认约定了一些常见的目录结构,如将应用程序的主类放置在特定的包路径下,将静态资源放置在特定的目录下等。此外,Spring Boot还提供了自动配置,根据应用程序的依赖和环境,自动配置Spring的各种组件和功能,减少了手动配置的工作量。

    传统方式:
    在传统的Web开发中,配置一个URL映射到一个处理方法通常需要进行显式的配置。比如,在Java Servlet中,需要在web.xml配置文件中添加以下内容:

    <servlet>
        <servlet-name>MyServlet</servlet-name>
        <servlet-class>com.test.MyServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>MyServlet</servlet-name>
        <url-pattern>/hello</url-pattern>
    </servlet-mapping>

    在Spring Boot中,可以在一个普通的Spring MVC控制器中定义一个处理方法,并使用@RequestMapping注解指定URL映射路径。示例如下:

    @Controller
    public class MyTestController {
        @RequestMapping("/hello")
        public String hello() {
            return "Hello, World!";
        }
    }

    • 与spring的区别

    (1)springboot可以建立独立的spring应用程序。

    (2)内嵌了如tomcat,Jetty和Undertow这样的容器,也就是说可以直接跑起来,用不着再做部署工作。

    (3)无需再像spring那样写一堆繁琐的XML配置文件

    (4)可以自动配置spring

    (5)提供的POM可以简化maven的配置

    • Spring Boot 的优点

    简化开发:Spring Boot通过约定大于配置的原则,提供了默认的配置和自动配置机制,大大简化了开发过程。开发人员可以专注于业务逻辑的实现,而无需花费过多时间和精力在繁琐的配置上。(代码少了、配置文件少了、不需要对第三方框架烦恼了、项目精简了,对整个团队的开发和维护来说,更大的节约了成本。)
    快速启动:Spring Boot提供了快速启动的能力,开发人员可以快速地启动和运行应用程序,减少了构建和部署的时间。它内置了常用的Servlet容器,可以将应用程序打包为可执行的JAR文件,直接在内嵌容器中运行。
    自动装配:Spring Boot 提供了自动装配机制,根据应用程序的依赖关系和配置信息,智能地自动配置 Spring 的各种组件和功能,大大减少了开发人员的手动配置工作,提高了开发效率。
    开箱即用:Spring Boot集成了许多常用的功能和组件,如安全性、数据库访问、缓存、消息队列等。这些功能都是开箱即用的,开发人员可以直接使用,无需手动集成和配置。这大大简化了开发过程,加快了应用程序的开发速度。
    自动化依赖管理:Spring Boot通过自动化依赖管理,简化了依赖库的引入和版本管理。它提供了起步依赖(Starter)的概念,开发人员只需添加相应的起步依赖,Spring Boot会自动适配依赖的版本和配置,简化了构建和管理项目的过程。
    生态系统和社区支持:Spring Boot 建立在Spring框架之上,可以无缝集成 Spring 的各种功能和扩展。同时,Spring Boot 还提供了大量的第三方库和插件,可以方便地集成其他技术栈,构建全栈式应用程序。

    springboot的缺点

    (1)修复bug较慢,报错时难以定位。

    (2)集成度较高,不易于了解底层。

    SSM

    • SSM是多个框架的组合简称,SSM =  Spring + SpringMVC + Mybatis,即Spring与Spring MVC,以及Spring 与MyBatis整合开发。这三个框架整合起来适用于搭建各种大型的企业级应用系统

    注: Mybatis 也是一种框架,功能同JDBC, 用于连接数据库进行数据处理。

    注:在学习SSM中,发现SpringMVC是web项目常用的框架。但近几年随着springboot的使用,springboot已经替代了springMVC了,SSM =  Spring + SpringBoot + Mybatis。

    • SSM是一种常用的 Java EE 开发框架组合,主要用于简化企业级应用开发。SSM 框架结合了 Spring 框架的依赖注入、控制反转和面向切面编程,Spring MVC 作为模型视图控制器,MyBatis 作为持久层框架,简化了企业级应用的开发。
    • 交互图

    • 应用比较广泛的 Java EE 企业级框架(JavaEE还有其他框架,如SSH)

    SSH

    • 基本用途同SSM, SSH =  Spring + Struts + Hibernate 三大框架

    注:Struts 是一个优秀、开源、免费的 MVC 的框架

    • 与SSM的关系:

    大约在2015年之前,业内使用最多的Java三大框架是Struts、Spring和Hibernate ,简称SSH。

    2015年之后逐步被SpringMVC、Spring、MyBatis所取代,简称SSM。

    SSM之所以取代SSH,在于Hibernate和MyBatis区别、SpringMVC和struts区别。

    ✅Hibernate和MyBatis区别

    总结来说就是:

    MyBatis:小巧、方便、高效、简单、直接、半自动

    Hibernate:强大、方便、高效、复杂、绕弯子、全自动

    举个形象的比喻:

    MyBatis:机械工具,使用方便,拿来就用,但工作还是要自己来作,不过工具是活的,怎么使由我决定。

    Hibernate:智能机器人,但研发它(学习、熟练度)的成本很高,工作都可以摆脱他了,但仅限于它能做的事。

    相同点:

    都是实现了orm模式的数据访问层框架,专门处理和数据库的交互。

    不同点:

    a. Hibernate通常被认为是一款完全的ORM框架。我们使用Hibernate时可以一行SQL语句都不用写,就能实现各种对数据库操作的意图。而Mybatis只是一款半完整的ORM框架,使用Mybatis需要自己编写SQL语句,因此Hibernate在功能和可移植性方面要强于Mybatis。

    b. 相对于Hibernate来说,Mybatis需要关注更多的细节,更加接近jdbc的开发模式,这使得Mybatis更加容易上手

    c. 在SQL优化方面,Mybatis更加直接,更加方便。

    d. Mybatis比Hibernate更加小巧灵活,对绝大多数项目来说,Mybatis足以满足项目需求,所以现在Mybatis比HIbernate更常用。

    ✅struts和SpringMVC区别。

    相同点:

    都是实现了mvc模式的 控制层框架,可以专门处理和前端的交互。

    不同点:

    a. Struts2中的Controller是多例的,SpringMVCController是单例的,所以SpringMVC是线程不安全的;

    b. SpringMVC是Spring框架中的一个子模块,所以SpringMVC和Spring整合时更加简单,配置也更加容易。

    maven

    • 简化依赖的jar管理。自动下载jar包和它所依赖的包,这样可以保证了多人开发时jar版本不同的问题

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

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

    相关文章

    Linux——入门基本指令汇总

    目录 1. ls指令2. pwd3. whoami指令4. cd指令5. clear指令6. touch指令7. mkdir指令8. rm指令9. man指令10. cp指令11. mv指令12. cat指令13. tac指令14. more指令15. less指令16. head指令17. tail指令18. date指令19. cal指令20. find指令21. which指令22. alias指令23. grep…

    基于SpringBoot+Vue的旅游管理系统【源码+文档+部署讲解】

    系统介绍 基于SpringBootVue实现的旅游管理系统采用前后端分离架构方式&#xff0c;系统设计了管理员、用户两种角色&#xff0c;系统实现了用户登录与注册、个人中心、用户管理、景点信息管理、订票信息管理、用户评价管理、景点咨询、轮播图管理等功能。 技术选型 开发工具…

    光学遥感显著性目标检测2023-2024论文学习

    GRSL 2023&#xff1a; Attention-Aware Three-Branch Network for Salient Object Detection in Remote Sensing Images 基于encoder-decoder框架&#xff0c;提出了一系列缝合模块&#xff0c;GCA&#xff0c;FDUC&#xff0c;MSDC&#xff0c;RA。 GRSL 2023&#xff1a;OR…

    接口 V2 完善:基于责任链模式、Canal 监听 Binlog 实现数据库、缓存的库存最终一致性

    &#x1f3af; 本文介绍了一种使用Canal监听MySQL Binlog实现数据库与缓存最终一致性的方案。文章首先讲解了如何修改Canal配置以适应订单表和时间段表的变化&#xff0c;然后详细描述了通过责任链模式优化消息处理逻辑的方法&#xff0c;确保能够灵活应对不同数据表的更新需求…

    graylog~认识一下-日志管理平台

    1、介绍 Graylog 是一个开源的日志管理和分析平台&#xff0c;旨在帮助企业集中收集、存储、搜索和分析来自各种来源的日志数据。它提供了强大的实时日志处理能力&#xff0c;适用于大规模分布式系统和复杂的生产环境。 主要功能 集中化日志管理&#xff1a; 收集来自不同来源…

    Android程序中使用FFmpeg库

    目录 前言 一、环境 二、创建APP 三. 添加FFmpeg库文件到app中 1. 复制ffmpeg头文件和so库到app中 2. 修改CMakeLists.txt文件内容. 3. 修改ffmpeglib.cpp 文件内容 4. 修改NativeLib.kt 文件添加方法和加载库 5. 调用 四. 增加解析视频文件信息功能 总结 前言 前面…

    AI 编程工具—Cursor进阶使用 Rules for AI

    AI 编程工具—Cursor进阶使用 Rules for AI 这里配置是给所有的会话和内嵌模式的,你可以理解为是一个全局的配置 下面的代码是之前Cursor 给我们生成的,下面我们开始配置Rules ,来让Cursor生成的代码更加符合我们的编程习惯 def quick_sort(arr):"""使用快…

    【系统环境丢失恢复】如何恢复和重建 Ubuntu 中的 .bashrc 文件

    r如果你遇到这种情况&#xff0c;说明系统环境的.bashrc 文件丢失恢复&#xff1a; 要恢复 ~/.bashrc 文件&#xff0c;可以按照以下几种方式操作&#xff1a; 恢复默认的 ~/.bashrc 文件 如果 ~/.bashrc 文件被删除或修改&#xff0c;你可以恢复到默认的版本。可以参考以下…

    PyTorch使用教程(8)-一文了解torchvision

    一、什么是torchvision torchvision提供了丰富的功能&#xff0c;主要包括数据集、模型、转换工具和实用方法四大模块。数据集模块内置了多种广泛使用的图像和视频数据集&#xff0c;如ImageNet、CIFAR-10、MNIST等&#xff0c;方便开发者进行训练和评估。模型模块封装了大量经…

    实战演示:利用ChatGPT高效撰写论文

    在当今学术界&#xff0c;撰写论文是一项必不可少的技能。然而&#xff0c;许多研究人员和学生在写作过程中常常感到困惑和压力。幸运的是&#xff0c;人工智能的快速发展为我们提供了新的工具&#xff0c;其中ChatGPT便是一个优秀的选择。本文将通过易创AI创作平台&#xff0c…

    群晖部署-Calibreweb

    最近家里搞了台群晖&#xff0c;准备部署个Calibreweb看看电子书&#xff0c;看了好多部署的教程老是不太成功&#xff0c;要么报错要么有问题的&#xff0c;很难搞。下面将部署流程分享一下&#xff0c;给大家参考&#xff0c;少走点弯路 镜像的选择 我们使用johngong/calibr…

    WordPress果果对象存储插件

    将网站上的图片等静态资源文件上传至七牛云对象存储&#xff0c;可以减轻服务器文件存储压力&#xff0c;提升静态文件访问速度&#xff0c;从而加速网站访问速度。 支持&#xff1a;阿里云对象存储、华为云对象存储、百度云对象存储、腾讯云对象存储、七牛云对象存储。 下载…

    电路研究9.1.1——合宙 Air780EP 模组外围线路

    本来要继续研究AT指令来着&#xff0c;结果发现后面还有之前用到的电路设计资料&#xff0c;所以就贴过来了。 5.3.2 工作模式&#xff1a; 注意&#xff1a;  当模块进入休眠模式或深度休眠模式后&#xff0c; VDD_EXT 电源会掉电&#xff0c;相应电压域的 GPIO 以及串口…

    LabVIEW 太阳能光伏发电系统智能监控

    本文介绍了基于 LabVIEW 的太阳能光伏发电监控系统的设计与实现&#xff0c;着重探讨了其硬件配置、软件架构以及系统的实现方法。该系统能够有效提高太阳能光伏发电的监控效率和精确性&#xff0c;实现了远程监控和数据管理的智能化。 ​ 项目背景 在当前能源紧张与环境污染…

    风光并网对电网电能质量影响的matlab/simulink仿真建模

    这个课题早在一几年的时候比较热门&#xff0c;之前作电科院配电网的一个项目中也有所涉及&#xff0c;我把其中一部分经典仿真模型思路分享给大家&#xff0c;电能质量影响这部分&#xff0c;我在模型中主要体现的就是不同容量的光伏、风电接入&#xff0c;对并网点的电压影响…

    大模型应用编排工具Dify之常用编排组件

    1.前言 dify的核心能力有&#xff1a;支持接入常见的 LLM、工作流编排、知识库和聊天助手等&#xff0c;架构图如下&#xff1a; 本文将结合实际项目落地经验&#xff0c;针对工作流编排中的常用编排组件进行介绍&#xff0c;以及如何在后端调用工作流编排。 2.落地案例 某 …

    Ubuntu16.04 安装OpenCV4.5.4 避坑

    Ubuntu16.04 安装C版OpenCV4.5.4 Ubuntu16.04 VSCode下cmakeclanglldb调试c 文章目录 Ubuntu16.04 安装C版OpenCV4.5.41. 下载Opencv压缩包2. 安装Opencv-4.5.43. 配置OpenCV的编译环境4.测试是否安装成功 1. 下载Opencv压缩包 下载Opencv压缩包&#xff0c;选择source版本。…

    pytest执行报错:found no collectors

    今天在尝试使用pytest运行用例的时候出现报错&#xff1a;found no collectors&#xff1b;从两个方向进行排查&#xff0c;一是看文件名和函数名是不是符合规范&#xff0c;命名要是"test_*"格式&#xff1b;二是是否存在修改文件名的情况&#xff0c;如果修改过文件…

    嵌入式知识点总结 C/C++ 专题提升(七)-位操作

    针对于嵌入式软件杂乱的知识点总结起来&#xff0c;提供给读者学习复习对下述内容的强化。 目录 1.位操作基础 2.如何求解整型数的二进制表示中1的个数 ? 3.如何求解二进制中0的个数 4.交换两个变量的值&#xff0c;不使用第三个变量。即a3,b5,交换之后a5,b3: 5.给定一个…

    两台局域网电脑通过飞秋传输大文件失败的解决方案

    问题描述&#xff1a; 局域网两台电脑之间传输大文件&#xff08;超过20G&#xff09;&#xff0c;不想太复杂&#xff0c;就各装个飞秋。但是通过直接发送文件发现总是失败&#xff0c;一会就中断了。 解决方法&#xff1a; 主界面上有一个文件共享的按钮&#xff0c;通过文…