web服务器架构,websocket

1. 非前后端分离架构

1. 前端html后端servlet

被tomcat服务器打包,统一指定根目录入口。通过原生表单发送到后端,后端根据请求数据进行重定向或请求转发,这样就不能进行动态渲染,也就必须存在很多静态html对应每一个请求

这里原生表单和react的api请求表单是有区别的,原生表单通常只能通过http包装一个简单key,value进行传输。但api表单可以发送任何形式的数据,因为发送数据通过json格式进行包装理论上可以包装任意数量,任意形式(如value可以为列表也可以为字典)的键值对。

2. 前端html后端python且使用websocket

  1. 这种处理方式和前端html后端servlet基本一样,都是通过后端的python程序或servlet程序完成页面跳转。
  2. 前端html同样可以通过js原生api请求,或者导入axios发出api请求而不是原生表单请求。然后后端处理后返回数据到前端。这是正常执行curd操作(数据库操作)的基本流程。
    但是如果遇到需要频繁更新操作如聊天室的人数变化,聊天消息的发送的接受等就需要用到websocket而不是api请求,api请求fetch是在应用层传输http数据发送一次就端开适合大量数据传输执行curd操作,
    websocket工作在网络层一直保持连接,快速传输更新少量数据,且这些数据通常是程序执行期间在内存中保存的实时数据如聊天室的人数变化,聊天消息的动态发送等。
    websocket一个很明显的作用就是,比如当一个用户进入了聊天室应该让所有用户都立即看到聊天室变化,如果此时用fetch发出http请求那么其他用户必须手动刷新页面才能看到变化,因为http是发送一次请求就断开,其他用户并不能动态感受变化,除非在前端设置自动刷新。
    但是websocket本质也是套接字双向传输,工作过程是,前端点击按钮触发前端socket请求,后端监听对应事件的socket接受到请求通过后端函数更新内存数据(不是数据库),然后在通过socket广播修改后的数据到前端监听对应事件的socket,然后调用前端js函数修改前端数据。

3. 前端jsp,后端servlet

虽然实现了动态页面,但是由于jsp的动态渲染机制依然是执行java代码而且还将java代码和html混在一起了,所以被thymeleaf模板替代。thymeleaf模板独立了html和java代码。

4. 前端thymeleaf,后端sevlet

实现动态页面,前后端代码更加独立,优于jsp

4. php

php和jsp很像都是将代码直接嵌入html。但是不同的是php是一种独立的语言,具备独立开发后端接口的能力。实现完全的前后端分离架构,比如前端出一个api请求,ngnix服务器对api路径的解析后,请求对应的php文件,然后将请求的php文件通过cgi接口执行后将程序结果返回给前端。就好比是前端react后端servlet中间件tomcat。

二. 前后端分离架构

前后端分离后不再需要依赖后端的动态渲染,前端页面美化全部由前端组件本身完成后端只需要提供数据。

1. 前端react后端servlet

前端通过api向后端发出请求,后端处理后返回数据到前端,前端自己通过数据渲染自己。

2. php

前端出一个api请求,ngnix服务器对api路径的解析后,请求对应的php文件,然后将请求的php文件通过cgi接口执行后将程序结果返回给前端。就好比是前端react后端servlet中间件tomcat。

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

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

相关文章

Ubuntu 下测试 NVME SSD 的读写速度

在 Ubuntu 系统下,测试 NVME SSD 的读写速度,有好多种方法,常用的有如下几种: 1. Gnome-disks Gnome-disks(也称为“Disks”)是 GNOME 桌面环境中的磁盘管理工具,有图形界面,是测试…

SpringBoot之核心配置

学习目标: 1.熟悉Spring Boot全局配置文件的使用 2.掌握Spring Boot配置文件属性值注入 3.熟悉Spring Boot自定义配置 4.掌握Profile多环境配置 5.了解随机值设置以及参数间引用 1.全局配置文件 Spring Boot使用 application.properties 或者application.yaml 的文…

后端服务集成ElasticSearch搜索功能技术方案

文章目录 一、为什么选用ElasticSearch二、ElasticSearch基本概念1、文档和字段2、索引和映射3、倒排索引、文档和词条4、分词器 三、ElasticSearch工作原理1、Term Dictionary、Term index2、Stored Fields3、Docs Values4、Segment5、Lucene6、高性能、高扩展性、高可用①高性…

【JavaEE进阶】获取Cookie/Session

🍀Cookie简介 HTTP协议自身是属于 "⽆状态"协议. "⽆状态"的含义指的是: 默认情况下 HTTP 协议的客⼾端和服务器之间的这次通信,和下次通信之间没有直接的联系.但是实际开发中,我们很多时候是需要知道请求之间的关联关系的. 例如登陆⽹站成…

《Spring Framework实战》3:概览

欢迎观看《Spring Framework实战》视频教程 Spring Framework 为基于现代 Java 的企业应用程序提供了全面的编程和配置模型 - 在任何类型的部署平台上。 Spring 的一个关键要素是应用程序级别的基础设施支持:Spring 专注于企业应用程序的 “管道”,以便…

借助免费GIS工具箱轻松实现las点云格式到3dtiles格式的转换

在当今数字化浪潮下,地理信息系统(GIS)技术日新月异,广泛渗透到城市规划、地质勘探、文化遗产保护等诸多领域。而 GISBox 作为一款功能强大且易用的 GIS 工具箱,以轻量级、免费使用、操作便捷等诸多优势,为…

高等数学学习笔记 ☞ 一元函数微分的基础知识

1. 微分的定义 (1)定义:设函数在点的某领域内有定义,取附近的点,对应的函数值分别为和, 令,若可以表示成,则称函数在点是可微的。 【 若函数在点是可微的,则可以表达为】…

linux之自动挂载

如果想要实现自动挂载,应该挂在客户端!!!!! 客户端: [rootlocalhost ~]# yum install nfs-utils -y (下载软件) [rootlocalhost ~]# systemctl start nfs-utils.servic…

用户界面软件01

Jens Coldewey 著,Tom.X 译 本文中的模式语言逐步深入地探讨用户界面架构的设计,它基于人机工程学,足以形成一套完整的体系。如果你对这方面有兴趣,请参考[Tog92],[Coo95]和[Col95]。 本文不讨论用户界面的布局&…

2025.1.8(c++对c语言的扩充——堆区空间,引用,函数)

笔记 上一笔记接续(练习2的答案) 练习:要求在堆区连续申请5个int的大小空间用于存储5名学生的成绩,分别完成空间的申请、成绩的录入、升序排序、成绩输出函数以及空间释放函数,并在主程序中完成测试 要求使用new和d…

(长期更新)《零基础入门 ArcGIS(ArcScene) 》实验七----城市三维建模与分析(超超超详细!!!)

城市三维建模与分析 三维城市模型已经成为一种非常普遍的地理空间数据资源,成为城市的必需品,对城市能化管理至关重要。语义信息丰富的三维城市模型可以有效实现不同领域数据与IS相信息的高层次集成及互操作,从而在城市规划、环境模拟、应急响应和辅助决策等众多领域公挥作用、…

Harmony开发【笔记1】报错解决(字段名写错了。。)

在利用axios从网络接收请求时,发现返回obj的code为“-1”,非常不解,利用console.log测试,更加不解,可知抛出错误是 “ E 其他错误: userName required”。但是我在测试时,它并没有体现为空,…

(2023|NIPS,LLaVA-Med,生物医学 VLM,GPT-4 生成自指导指令跟随数据集,数据对齐,指令调优)

LLaVA-Med: Training a Large Language-and-Vision Assistant for Biomedicine in One Day 目录 LLaVA-Med: Training a Large Language-and-Vision Assistant for Biomedicine in One Day 0. 摘要 1. 简介 2. 相关工作 3. 生物医学视觉指令数据 4. 将多模态对话模型适配…

(概率论)无偏估计

参考文章:(15 封私信 / 51 条消息) 什么是无偏估计? - 知乎 (zhihu.com) 首先,第一个回答中,马同学图解数学讲解得很形象, 我的概括是:“注意,有一个总体的均值u。然后,如果抽样n个&…

国产游戏崛起,燕云十六移动端1.9上线,ToDesk云电脑先开玩

游戏爱好者的利好消息出新了!网易大型武侠仙游《燕云十六声》正式官宣,移动端要在1月9日正式上线了!你期待手游版的燕云吗?不妨评论区留言说说你的看法。小编分别花了几个小时在台式机电脑和手机上都试了下,欣赏画面还…

VS2022引入sqlite数据库交互

法一:用官网编译好的动态库(推荐) 下载所需文件 sqlite官网地址:https://www.sqlite.org/howtocompile.html 下载以下的2个压缩包 第一个压缩包 sqlite-amalgamation-xxxx.zip,xxxx是版本号,保持一致即可,这里面有sqite3.h 第…

Java后端常用的4种请求方式(通俗易懂)

文章目录 前言通用接口类(ControllerDemo)通用实体类(UserEntity)通用响应类(HttpClientResult)成功截图(先启动项目,然后右键执行main方法) HttpClientHttpClient 的主要类代码案例导入依赖工具类(HttpClientUtil)测试类 HttpURLConnection简介调用步骤代码案例导入依赖工具类…

STM32烧写失败之Contents mismatch at: 0800005CH (Flash=FFH Required=29H) !

一)问题:用ULINK2给STM32F103C8T6下载程序,下载方式设置如下: 出现下面两个问题: 1)下载问题界面如下: 这个错误的信息大概可以理解为,在0x08000063地址上读取到flash存储为FF&am…

Spring Boot教程之五十二:CrudRepository 和 JpaRepository 之间的区别

Spring Boot – CrudRepository 和 JpaRepository 之间的区别 Spring Boot建立在 Spring 之上,包含 Spring 的所有功能。由于其快速的生产就绪环境,使开发人员能够直接专注于逻辑,而不必费力配置和设置,因此如今它正成为开发人员…

【SQL】Delete使用

目录 语法 需求 示例 分析 代码 语法 DELETE删除表中所需内容 删除表中满足特点条件的行:DELETE FROM 表名 WHERE 条件; 删除表中所有行:DELETE FROM 表名; WHERE子句 WHERE子句用于指定从表中选取记录的条件。允许筛选数据,只返回满足…