web服务器 网站部署的架构

news/2025/1/23 21:12:28/

WEB服务器工作原理

Web

web是WWW(World Wide Web)的简称,基本原理是:请求(客户端)与响应(服务器端)原理,由遍布在互联网中的Web服务器和安装了Web浏览器的计算机组成

客户端发出请求的方式:地址栏请求、超链接请求、表单请求

Web是一种典型的分布式应用架构,从技术层面上看,Web架构的精华有三处

①使用HTML(Hypertext Markup Language)实现信息文档的表示

②使用URL(Uniform Resource Locator)实现全球信息的精确定位

③使用HTTP(HyperText Transfer Protocol)实现分布式的信息传输

什么是web服务器,应用服务器和web容器?

1. Web 服务器

Web 服务器是一种软件或硬件,旨在处理通过 HTTP 协议传送的请求。它们主要用于存储、处理和响应来自客户端(通常是浏览器)的请求,提供静态内容(如 HTML 文件、图像、CSS 文件等)和基础的动态内容。

  • 功能:接收 HTTP 请求、响应 HTTP 请求、处理静态资源和基础的动态内容等。

2. 应用服务器

应用服务器是一种服务器环境,专门用于运行应用程序并提供一些高级功能,例如业务逻辑处理和动态内容生成。与仅提供静态内容的 Web 服务器不同,应用服务器能够处理复杂的交互、连接后台数据库和管理应用程序状态。

  • 功能:业务逻辑处理、数据库连接、生成动态内容、事务管理等。
  • 示例:Java EE 应用服务器(如 JBoss、GlassFish、WebLogic)、.NET 应用服务器等。

3. Web 容器(Servlet 容器)

Web 容器,也称为 Servlet 容器,是一种运行 Java Servlet 和 JSP(JavaServer Pages)的环境。它管理 Web 应用程序的生命周期,以及处理客户端请求的相关服务。Web 容器属于应用服务器的一部分,但其主要任务是提供 Web 应用的特定功能。

  • 功能:加载和卸载 Web 应用、管理 servlets 生命周期、处理请求和响应、以及支持 JSP 等技术。
  • 示例:Apache Tomcat、Jetty。

工作原理

  1. 客户端请求

    • 用户在浏览器中输入一个 URL,或点击一个链接,浏览器会将该请求发送到指定的 Web 服务器。请求通常是一个 HTTP GET 请求,但也可以是 POST、PUT 或 DELETE 等其他类型的请求。
  2. DNS 解析

    • 请求中的域名需要转化为 IP 地址。DNS(域名系统)会将域名解析为对应的服务器的 IP 地址,帮助浏览器找到 Web 服务器的位置。
  3. 建立连接

    • 一旦浏览器获得了服务器的 IP 地址,它将通过 TCP/IP 协议与 Web 服务器建立连接。这个过程通常使用三次握手来确保连接的可靠性。
  4. 请求处理

    • Web 服务器接收到来自客户端的请求后,会解析请求信息,确定用户请求的资源。
    • Web 服务器会查找请求的文件(如 HTML 文件、图像文件)或者动态内容(如运行一个 PHP 脚本或访问数据库)并处理请求。

在这里插入图片描述

  1. 生成响应

    • 一旦请求被处理,Web 服务器将生成一个 HTTP 响应。该响应包含状态码(如 200 表示成功,404 表示找不到资源等)、响应头和响应体(请求的内容)。
    • 如果请求的是静态文件(如 HTML、CSS、JS 或图像),Web 服务器将直接返回这些文件。
    • 如果请求的是动态内容,Web 服务器可能需要与应用服务器、数据库交互,生成动态内容后再返回给客户端。
  2. 返回响应

    • Web 服务器通过 TCP 连接发送 HTTP 响应回客户端的浏览器。浏览器接收到响应后,会解析并呈现网页内容。
  3. 关闭连接

    • 根据 HTTP 协议的版本(如 HTTP/1.1 支持持久连接,而 HTTP/2 则有更先进的连接管理),浏览器和服务器可以选择保持连接活动或在响应完成后关闭连接。

正向代理(Forward Proxy)

定义:

正向代理是代理服务器位于客户端与目标服务器之间,客户端通过它向目标服务器发送请求,目标服务器无法直接知道请求源于哪个客户端。

功能:

  • 隐藏客户端信息:目标服务器只知道代理服务器的 IP 地址,而不知道客户端的真实 IP 地址。
  • 访问控制:可以用来限制客户端对某些网站或服务的访问,例如在企业或学校环境中。
  • 缓存:代理服务器可以缓存请求的内容,以提高访问速度和减少带宽消耗。
  • 绕过地理限制:允许用户访问被地理限制的网站或服务。

使用场景:

  • 企业内部网络中,控制员工访问外部网站。
  • 在互联网审查严格的地区,用户使用代理获取受限内容。

反向代理(Reverse Proxy)

定义:

反向代理是一种服务器,接收客户端的请求并将其转发到内部的一台或多台服务器。这种情况下,客户端并不知道具体哪个服务器在处理其请求。

功能:

  • 隐藏服务器信息:目标服务器的真实 IP 地址对外部用户是隐藏的。
  • 负载均衡:将客户端请求分配到多台后端服务器,以优化资源利用和提高响应速度。
  • SSL 加密:可以用于处理 SSL/TLS 加密,减轻后端服务器的负担。
  • 安全性:提供额外的安全措施,如防火墙或应用程序防护。

使用场景:

  • Web 应用程序使用反向代理来平衡流量和提高性能。
  • 需要保护私有服务器并防止直接访问。

常见的 Web 服务器软件

1. Apache HTTP Server

  • 概述:Apache 是一款开源的高性能 Web 服务器,已经被广泛使用。它在 Web 服务器市场占据着重要位置,因其灵活性和强大的功能而受到开发者和管理员的青睐。

  • 主要特点

    • 模块化设计:支持多种模块,可以根据需要进行功能扩展(如 SSL、URL 重写、反向代理等)。
    • 丰富的配置选项:允许用户通过配置文件进行深入定制,适应不同的需求。
    • 虚拟主机支持:能够在同一服务器上托管多个网站,通过虚拟主机进行区分。
    • 强大的社区支持:拥有庞大的用户基础和在线文档,易于查找解决方案。
  • 适用场景:适合各种规模的项目,从小型网站到大型企业应用,特别是需要多种功能和高度可定制的环境。

2. Nginx

  • 概述:Nginx 是一个轻量级的高性能 HTTP 服务器和反向代理服务器,以其出色的并发处理能力而闻名。最初是为了解决 C10K 问题(处理千个并发连接)而设计的。

  • 主要特点

    • 事件驱动架构:使用异步非阻塞 I/O 模式,能够同时处理大量的并发请求,节约内存资源。
    • 反向代理和负载均衡:能够将请求转发到后端服务器,进行负载均衡,提高应用的可用性和性能。
    • 高效的静态文件服务:特别擅长处理静态资源,能够快速响应用户请求。
    • 低资源消耗:在处理高并发的情况下,低内存占用使其非常受欢迎。
功能场景解释
  • 1、Http代理,反向代理:

作为web服务器最常用的功能之一,尤其是反向代理。
Nginx在做反向代理时,提供性能稳定,并且能够提供配置灵活的转发功能。Nginx可以根据不同的正则匹配,采取不同的转发策略,比如图片文件结尾的走文件服务器,动态页面走web服务器,只要你正则写的没问题,又有相对应的服务器解决方案,你就可以随心所欲的玩。并且Nginx对返回结果进行错误页跳转,异常判断等。如果被分发的服务器存在异常,他可以将请求重新转发给另外一台服务器,然后自动去除异常服务器
在这里插入图片描述

  • 2、负载均衡

负载均衡的基本概念

  • 请求分发:负载均衡器负责接收用户请求,然后将这些请求分发到后端服务器上,以实现负载均匀分配。
  • 故障检测:负载均衡器可以监控后端服务器的健康状态,确保只有正常工作的服务器处理请求。一旦检测到某台服务器出现问题,负载均衡器会将流量重定向到其他健康服务器
  • 会话保持:在某些应用场景中,可能需要将来自同一用户的请求始终路由到同一台服务器,负载均衡器可以通过会话保持(又称为会话粘性)来实现这个功能。

Nginx提供的负载均衡策略有2种:内置策略和扩展策略。内置策略为轮询,加权轮询,Ip hash。扩展策略,就天马行空,只有你想不到的没有他做不到的啦,你可以参照所有的负载均衡算法,给他一一找出来做下实现。

在这里插入图片描述

Ip hash算法,对客户端请求的ip进行hash操作,然后根据hash结果将同一个客户端ip的请求分发给同一台服务器进行处理,可以解决session不共享的问题。

在这里插入图片描述
nginx 文件结构

...              #全局块
//全局块:配置影响nginx全局的指令。
//一般有运行nginx服务器的用户组,nginx进程pid存放路径,日志存放路径,配置文件引入,允许生成worker process数等。events {         #events块...//events块:配置影响nginx服务器或与用户的网络连接。//有每个进程的最大连接数,选取哪种事件驱动模型处理连接请求,是否允许同时接受多个网路连接,开启多个网络连接序列化等。
}http      #http块
{...   #http全局块//http块:可以嵌套多个server,配置代理,缓存,日志定义等绝大多数功能和第三方模块的配置。//如文件引入,mime-type定义,日志自定义,是否使用sendfile传输文件,连接超时时间,单连接请求数等。server        #server块//配置虚拟主机的相关参数,一个http中可以有多个server。{ ...       #server全局块location [PATTERN]   #location块//配置请求的路由,以及各种页面的处理情况。{...}location [PATTERN] {...}}server{...}...     #http全局块
}
Nginx 的常见用例:
  1. 静态文件服务器:很适合用来服务静态文件,如 HTML、CSS 和 JavaScript。

  2. 反向代理服务器:可用于将请求代理到应用服务器,增强应用的安全性和性能。

  3. 负载均衡:通过将请求分配到多个应用服务器,提升服务的可用性和响应速度。

  4. WebSocket 支持:支持 WebSocket 协议,适合实时应用。

  5. SSL/TLS 终端:可以处理 SSL 加密,减轻应用服务器的负担。

启动和管理 Nginx:
  • 安装:可以通过包管理工具(如 aptyum)安装 Nginx。
  • 启动:使用 nginx 命令启动 Nginx,用 nginx -s reload 命令重新加载配置。
  • 检查状态:使用 nginx -t 命令检查配置文件的语法。

3. Apache Tomcat

  • 概述:Tomcat 是一个开源的 Java Servlet 容器,专门用于运行 Java Web 应用,支持 Java EE 标准中的 Servlets 和 JSP(JavaServer Pages)。

  • 主要特点

    • Java 专属:专为运行 Java 应用而设计,支持标准的 Servlet API 和 JSP 规范。
    • 灵活的部署:允许将 Web 应用以 WAR 文件的形式部署,简化了应用的管理和更新。
    • Web 应用管理:提供管理界面,方便监控和管理部署的应用程序。
    • 与 Java EE 的集成:能够与其他 Java EE 技术(如 Spring、Hibernate 等)良好配合。
  • 适用场景:专门适合 Java 开发的 Web 应用,通常是需要处理复杂逻辑的动态网站。
    在这里插入图片描述
    Tomcat在技术实现上所处的位置如下
    在这里插入图片描述

Tomcat主要组件:服务器Server,服务Service,连接器Connector、容器Container, 连接器Connector和容器Container是Tomcat的核心。
在这里插入图片描述

一个Container容器和一个或多个Connector组合在一起,加上其他一些支持的组件共同组成一个Service服务,有了Service服务便可以对外提供能力了,但是Service服务的生存需要一个环境,这个环境便是Server,Server组件为Service服务的正常使用提供了生存环境,Server组件可以同时管理一个或多个Service服务。

  • 1、Connector组件

Connector组件是Tomcat中的两个核心组件之一,他的主要任务是负责接收浏览器发过来的TCP连接请求,创建1个Request和Response对象分别用于和请求端交换数据。然后会产生一个线程来处理这个请求并把产生Request和Response对象传给处理这个请求的线程,处理这个请求的线程就是Container组件要做的事了。

  • 2、Container组件

Container是容器的父接口,该容器的设计用的是典型的责任链的设计模式,它由四个自容器组件构成,分别是Engine、Host、Context、Wrapper。这四个组件是负责关系,存在包含关系。通常一个Servlet class对应一个Wrapper,如果有多个Servlet定义多个Wrapper,如果有多个Wrapper就要定义一个更高的Container,如Context。

Context 还可以定义在父容器 Host 中,Host 不是必须的,但是要运行 war 程序,就必须要 Host,因为 war 中必有 web.xml 文件,这个文件的解析就需要 Host 了,如果要有多个 Host 就要定义一个 top 容器 Engine 了。而 Engine 没有父容器了,一个 Engine 代表一个完整的 Servlet 引擎。

容器类型描述
Engine 容器容器比较简单,只定义了一些基本的关联关系。
Host 容器是 Engine 的子容器,代表一个虚拟主机,用于运行多个应用。它负责安装和展开应用,并标识应用以便区分它们。它的子容器通常是 Context。
Context 容器代表 Servlet 的上下文环境,具备 Servlet 运行的基本条件。它管理 Servlet 实例(以 Wrapper 形式出现)。在 Tomcat 5 以后,通过 request 来分配正确的 Servlet。
Wrapper 容器代表一个 Servlet,负责管理 Servlet 的装载、初始化、执行和资源回收。它是最底层的容器,没有子容器,调用 addChild 会报错。其实现类是 StandardWrapper,它还实现了 ServletConfig,直接与 Servlet 的各种信息打交道。
  • Tomcat目录
    |—bin Tomcat:存放启动和关闭tomcat脚本;
    |—conf Tomcat:存放不同的配置文件(server.xml和web.xml);
    |—doc:存放Tomcat文档;
    |—lib/japser/common:存放Tomcat运行需要的库文件(JARS);
    |—logs:存放Tomcat执行时的LOG文件;
    |—src:存放Tomcat的源代码;
    |—webapps:Tomcat的主要Web发布目录(包括应用程序示例);
    |—work:存放jsp编译后产生的class文件;

  • HTTP请求Tomcat内部处理过程

在这里插入图片描述

  1. 用户点击网页内容,请求被发送到本机端口8080,被在那里监听的 HTTP/1.1 Connector 获得。
  2. Connector把该请求交给它所在的Service的Engine来处理,并等待Engine的回应。
  3. Engine获得请求localhost/test/index.jsp,匹配所有的虚拟主机Host。
  4. Engine匹配到名为 localhost 的Host(即使匹配不到也把请求交给该Host处理,因为该Host被定义为该Engine的默认主机),名为localhost的Host获得请求/test/index.jsp,匹配它所拥有的所有的Context。Host匹配到路径为/test的Context(如果匹配不到就把该请求交给路径名为“ ”的Context去处理)。
  5. path=“/test”的Context获得请求/index.jsp,在它的mapping table中寻找出对应的Servlet。Context匹配到URL PATTERN为*.jsp的Servlet,对应于JspServlet类。
  6. 构造HttpServletRequest对象和HttpServletResponse对象,作为参数调用JspServlet的 doGet()或doPost().执行业务逻辑、数据存储等程序。
  7. Context把执行完之后的HttpServletResponse对象返回给Host。
  8. Host把HttpServletResponse对象返回给Engine。
  9. Engine把HttpServletResponse对象返回Connector。
  10. Connector把HttpServletResponse对象返回给客户Browser。

Tomcat与Nginx/Apache的应用架构

在这个架构中,Nginx 或 Apache 充当前端的网关,通过反向代理接受所有进入的请求。请求根据类型被智能地路由到不同的处理服务器,这种模式称为动静分离。以下是具体流程:

  1. 接收请求:客户端发起请求,首先到达 Nginx 或 Apache 服务器

  2. 请求处理

    • 静态请求:例如,请求 CSS、JavaScript、图片等静态资源,这些请求会直接由 Nginx 或 Apache 处理,并返回静态内容。
    • 动态请求:例如,请求访问数据库、用户认证等需要应用逻辑的请求,这些请求会被转发到 Tomcat 服务器
  3. Tomcat 处理动态逻辑:Tomcat 接收动态请求,执行相应的业务逻辑,并返回处理结果(通常是生成的 HTML 页面或 JSON 数据)。

  4. 最终响应:Nginx 或 Apache 将 Tomcat 的响应返回给客户端。

2. 优点分析
  • 性能优化:静态内容由 Nginx 或 Apache 直接处理,这可以显著减少 Tomcat 的负担,提升整体性能。
  • 高并发处理:Nginx 和 Apache 设计上能够高效处理大量并发请求,而 Tomcat 更适合处理业务逻辑。
  • 安全性:通过反向代理,可以隐藏内部服务器架构,改善安全性。
  • 灵活性:可以根据负载和请求类型调整 Nginx/Apache 和 Tomcat 的配置。

简化的架构图示

                         +---------------+|   Client      |+---------------+||+--------------------+|    Nginx/Apache    |+--------------------+| 静态请求 ||  动态请求 |+--------------------+/                \/                  \+----------------+        +----------------+| Static Content |        |    Tomcat      || (Nginx/Apache) |        | (Dynamic Logic)|+----------------+        +----------------+

网站部署的架构

以主流的B/S架构网站为例,大型网站的部署一般分为几个部分

1、前端部分

2、后端部分

3、云计算部分

4、存储部分与第三方云计算服务部分

1、前端部分

单个前端服务器一般包含2个部分,Web服务器软件、网页资源文件

在这里插入图片描述

Web服务器软件作用是在接收到请求后,在磁盘上找到对应的网页资源文件,并将其发送给请求端

网页资源文件指的是网页的静态资源文件,包括HTML文件、CSS文件、JavaScript文件、图片文件、视频文件等

其中,一部分网页资源文件可能会存在单独的文件服务当中(如上传的头像、视频等)

对于前端服务器集群而言,前面需要增加负载均衡以分发请求

负载均衡可以是自己搭建的服务器(Nginx等)或者是购买云服务

在负载均衡前面需要增加CDN服务(缓存网页资源文件),增加CDN是为了加速网页资源文件的下载速度

2、后端部分

单个后端服务器一般包含2个部分,Web应用服务器软件、后端应用程序

在这里插入图片描述
Web应用服务器软件根据不同的开发语言有所区别,Java的话一般是Tomcat 或者Jetty

其作用是接收到请求后,调用相对应的后端应用程序,并把后端应用程序处理的结果返回请求端

后端应用程序是真正处理请求的程序,java编写的话一般是以.war结尾的文件

后端应用程序在网站系统中处于“司令塔”的位置

会调用很多第三方软件,如数据库、非关系型数据库(如Redis)、消息队列、第三方云计算服务等

而且后端应用程序还会操作共享文件,如上传头像、视频等

对于后端服务器集群而言,前面需要增加负载均衡以分发请求,负载均衡可以与前端服务共用

3、云计算部分

由于没有比较通用且流行的框架,其结构因具体实现方式而异。

在这里插入图片描述

不过云计算部分的工作原理一般是,后端应用程序向消息队列下发任务,云计算服务软件监听消息队列并执行任务

云计算服务集群一般是监听同一个消息队列,以抢占的方式获取任务的,所以不需要考虑分发任务的问题

当然,云计算服务根据具体的功能,也可能会使用第三方软件(如数据库等)或者操作共享文件

4、存储部分与第三方云计算服务部分

存储部分包括数据库、文件服务器、非关系型数据库等

在这里插入图片描述

这些软件都会提供自己的集群方式

第三方云计算服务部分一般是通过API调用的

总体的部署架构如图所示

在这里插入图片描述

补充概念

1. 集群(Cluster)

  • 定义:集群是由多台计算机(服务器)组成的系统,这些计算机通过网络连接并协同工作,通常它们提供相同的功能。集群的目标是提高服务可用性和可扩展性,降低单个服务器的负载。
  • 类型
    • 负载均衡集群:通过将请求分发到不同的服务器来处理大量流量,例如Web服务。
    • 高可用集群:通过冗余配置保证服务的持续可用性,在某个节点发生故障时,其他节点代替其提供服务。

2. 分布式系统(Distributed System)

  • 定义:分布式系统由多个独立的计算机组成,每台计算机负责系统的不同功能。这些计算机通常通过网络进行通信。分布式系统的设计旨在提高系统的可扩展性和容错能力。
  • 优势

3. Docker

  • 定义:Docker 是基于 Linux 的开源容器化平台,允许开发者将应用和其所有依赖打包到一个标准的、轻量级的容器中。每个容器都是一个隔离的运行环境,但它们共享同一操作系统的内核。
  • 特点
    • 隔离性:容器彼此独立,避免了环境冲突。
    • 可移植性:容器可以在不同的环境中快速部署,确保一致性。
    • 高效性:多个容器可以在同一台物理服务器上运行,资源利用率高。

4. Kubernetes(K8S)

  • 定义:Kubernetes 是一个开源的容器编排平台,用于自动部署、扩展和管理容器化应用程序。它可以管理由 Docker 或其他容器技术构建的容器。
  • 功能
    • 自动化部署:K8S 可以根据负载自动部署和销毁容器。
    • 服务发现和负载均衡:自动发现服务,并将流量分配到适当的容器。
    • 自我修复:控制平面监控容器状态,如果某个容器失败,K8S 会自动重启或替换它。

5. 虚拟机(Virtual Machine)

  • 定义:虚拟机是在虚拟化软件(如 VMware、VirtualBox)上运行的计算机,相当于在物理服务器上模拟出多个独立的软件环境(虚拟环境)。每个虚拟机都有自己的操作系统和资源,表现为一台完整的计算机。
  • 特点
    • 资源隔离:每个虚拟机都有自己的操作系统和资源分配,彼此独立。
    • 灵活性:可以在一台物理服务器上运行多个虚拟机,各自独立运行不同的应用。
    • 方便管理:可以对虚拟机进行快照,便于备份和恢复。

集群分布式系统 是提升系统性能和可靠性的架构理念。

Docker 提供了容器化技术,支持轻量级的应用打包和部署。

Kubernetes 是管理和编排容器的工具,可以自动化管理容器的生命周期。

虚拟机 提供了完整的虚拟化环境,允许在单台物理服务器上运行多个独立的系统。


http://www.ppmy.cn/news/1565580.html

相关文章

ue5 在一个蒙太奇的上半身插槽放两段动画,用片段1,2作为区分。播放动画蒙太奇,自由选择片段1,2

如图 在一个蒙太奇中,上半身插槽放入两段动画,新建1,2片段。拖到如图位置 角色蓝图 运行成功,只播放第2段动画

GCPAAS/DashBoard:完全免费的仪表盘设计,基于Vue+ElementUI+G2Plot+Echarts,开源代码,简单易用!还在等什么呢

嗨,大家好,我是小华同学,关注我们获得“最新、最全、最优质”开源项目和高效工作学习方法 GCPAAS/DashBoard,一款基于SpringBoot、MyBatisPlus、ElementUI、G2Plot、Echarts等技术栈的仪表盘设计器,具备仪表盘目录管理…

数据清洗新利器:自动化数据清洗工具的探秘

友友们好! 我的新专栏《Python进阶》正式启动啦!这是一个专为那些渴望提升Python技能的朋友们量身打造的专栏,无论你是已经有一定基础的开发者,还是希望深入挖掘Python潜力的爱好者,这里都将是你不可错过的宝藏。 在这个专栏中,你将会找到: ● 深入解析:每一篇文章都将…

电子电气架构 --- 车载通信诊断

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 简单,单纯,喜欢独处,独来独往,不易合同频过着接地气的生活,除了生存温饱问题之外,没有什么过多的欲望,表面看起来很高冷,内心热情,如果你身…

Navicat Premium 数据可视化

工作区,数据源以及图表 数据可视化是使用可视化组件(例如图表,图形和地图)的信息和数据的图形表示。 数据可视化工具提供了一种可访问的方式,用于查看和理解数据中的趋势,异常值和其他模式。 在Navicat中&…

C语言二级

//请编写函数fun(),该函数的功能是:计算并输出给定整数n的所有因 //子(不包括1和自身)之和。规定n的值不大于1000。例如,在主函数 //中从键盘给n输入的值为856,则输出为:sum 763。 //注意&…

java开发,IDEA转战VSCODE配置(mac)

一、基本java开发环境配置 前提:已经安装了jdk、maven、vscode,且配置了环境变量 1、安装java相关的插件 2、安装spring相关的插件 3、vscode配置maven环境 打开 VsCode -> 首选项 -> 设置,也可以在setting.json文件中直接编辑&…

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

目录 JAVA 框架 javaEE spring springmvc springboot SSM SSH maven JAVA 一种面向对象、高级编程语言,Python也是高级编程语言;不是框架(框架:一般用于大型复杂需求项目,用于快速开发)具有三大特性,所谓Jav…