JavaWeb开发基础7个Web术语解析

7个Web术语

  1. Website: static vs dynamic

  2. HTTP

  3. HTTP Requests

  4. GET vs POST

  5. Servlet Container

  6. Server: Web vs Application

  7. Content Type

Website: static vs dynamic

网站内容包括文本、图片、音频、视频,通过URL来访问。网站分为静态网站和动态网站。

静态网站

静态网站是用HTML编写的,所有内容都包含在网页内,就像是打印出来的一样。

动态网站

动态网站分为客户端和服务端,内容是可以动态变化的,可以根据用户请求动态更新网页内容。服务端语言有Servlet、ASP.NET等。

HTTP

HTTP是Hypertext Transfer Protocol缩写,超文本传输协议,位于OSI网络分层模型的应用层(第七层)。

超文本(Hypertext)是一种文本形式,它不仅包含普通的文本内容,还包含了可以链接到其他文本或资源的元素。这些链接通常称为“超链接”(Hyperlinks)。超文本的概念由Ted Nelson在1960年代提出,并在万维网(World Wide Web)的发展中得到了广泛应用。

HTTP具有以下特点:

  • media independent:支持任何类型的媒体内容

  • connectionless:无连接,客户端发送请求后,就断开了连接

  • stateless:无状态,服务端不会保留客户端请求的状态,不知道谁是谁

HTTP是基于TCP/IP协议的,通过TCP建立可靠连接。为什么说HTTP是无连接的,但又是基于TCP可靠连接的?如果想要可靠地传输数据,那么就必须要有稳定可靠的连接,保证数据不丢失,这个连接就是TCP连接。HTTP正是通过TCP连接来发送和接收数据的。

在HTTP/1.0中,每次请求都会建立一个新的TCP连接,完成请求后立即关闭连接。在HTTP/1.1中,引入了持久连接,允许多个请求/响应在同一个TCP连接上进行,但每个请求/响应对话仍然是独立的。HTTP/1.1是持久连接,那么还能叫做无连接吗?是的,仍然是无连接。持久连接是通过 Connection: keep-alive 头部实现的,允许连接在一段时间内保持打开状态,不需要重新建立和关闭连接。无连接的本质是每个请求/响应对话都是独立的,强调的是独立。

HTTP Requests

HTTP请求是客户端发送给服务端的请求,包含以下内容:

  • The Request-line(请求行)
  • The analysis of source IP address, proxy and port(源信息)
  • The analysis of destination IP address, protocol, port and host(目标信息)
  • The Requested URI (Uniform Resource Identifier)(链接)
  • The Request method and Content(方法和内容)
  • The User-Agent header(请求头)
  • The Connection control header(请求头)
  • The Cache control header(请求头)

可以在浏览器中通过F12开发者工具,查看HTTP请求信息。

GET vs POST

GET和POST是HTTP请求的2个主要方法,它们的区别如下:

  1. 数据传输方式
  • GET:将请求参数附加在URL的查询字符串中,数据通过URL传输。例如:http://example.com/page?param1=value1&param2=value2
  • POST:将请求参数包含在请求体中,数据通过请求体传输,不会显示在URL中
  1. 安全性
  • GET:由于参数显示在URL中,敏感信息容易被暴露在浏览器历史记录、日志文件等地方,因此不适合传输敏感数据
  • POST:参数在请求体中传输,相对来说更安全,但并不意味着完全安全,仍需使用 HTTPS 来加密数据
  1. 数据长度限制
  • GET:由于URL长度限制(通常为2048字符),GET请求传输的数据量有限
  • POST:没有明显的数据长度限制,可以传输大量数据
  1. 幂等性
  • GET:幂等的,即多次相同的GET请求应该产生相同的结果,不会对服务器资源产生副作用
  • POST:非幂等的,即多次相同的POST请求可能会产生不同的结果,通常用于提交数据或触发服务器上的操作
  1. 缓存
  • GET:可以被浏览器缓存,适合用于获取不变的数据
  • POST:默认情况下不会被缓存,适合用于提交数据或执行操作
  1. 用途
  • GET:主要用于请求数据,例如获取网页内容、查询信息等
  • POST:主要用于提交数据,例如提交表单、上传文件等

Servlet Container

Servlet容器(Servlet Container)是一个运行环境,用于管理和执行Java Servlet。它属于Java EE,负责处理客户端请求、管理Servlet生命周期以及提供各种服务(如安全性、并发性、资源管理等)。

Servlet容器是Web服务器(Web Server)的一部分,我们常说的Apache Tomcat,既是一个Web服务器(内置HTTP Server),也是一个Servlet容器。它能够处理静态内容和动态内容,提供了一个完整的运行环境来开发和部署Java Web应用。

Server: Web vs Application

Web服务器主要处理静态内容和HTTP请求,而应用服务器主要处理动态内容和业务逻辑。

传统的Web服务器:

  • Apache HTTP Server:一个开源的Web服务器,广泛用于托管静态网站和动态Web应用
  • Nginx:一个高性能的Web服务器,特别擅长处理大量并发连接,常用于反向代理和负载均衡

现代的Web服务器:

  • Node.js:一个基于Chrome V8引擎的JavaScript运行时环境,使用事件驱动、非阻塞I/O模型,使其非常适合构建高性能、可扩展的网络应用
  • Caddy:一个现代的Web服务器,默认支持HTTPS,配置简单,支持自动TLS证书管理

应用服务器:

  • Apache Tomcat:虽然主要是一个Servlet容器,但也可以作为一个轻量级的应用服务器
  • GlassFish:一个完整的Java EE应用服务器,支持所有Java EE规范
  • JBoss/WildFly:一个开源的Java EE应用服务器,提供全面的企业级功能
  • WebLogic:Oracle提供的企业级应用服务器,支持广泛的企业功能
  • WebSphere:IBM提供的企业级应用服务器,广泛用于大型企业应用

在实际应用中,Web服务器和应用服务器通常会一起使用,比如:

  • Nginx作为前端Web服务器,处理静态内容,将动态请求转发给后端的Tomcat应用服务器处理

  • Nginx作为反向代理,接收所有请求,并根据请求类型进行处理或转发,给后端的应用服务器Tomcat,同时可以实现负载均衡

Servlet容器既可以是Web服务器的一部分,例如,Apache Tomcat就是一个既包含Web服务器功能又包含Servlet容器功能的服务器。Tomcat能够处理静态内容(如HTML、CSS、JavaScript文件)和动态内容(如通过Servlet生成的内容)。

Servlet容器也可以是应用服务器的一部分,例如,在企业级应用服务器(如GlassFish、JBoss/WildFly)中,应用服务器不仅包含Servlet容器,还提供了许多其他企业级功能,如事务管理、消息队列、EJB(Enterprise JavaBeans)支持等。

+----------------------+       +----------------------+
| Web Server           |       | Application Server   |
|                      |       |                      |
| +------------------+ |       | +------------------+ |
| | Servlet Container| |       | | Servlet Container| |
| | (Tomcat)         | |       | | (GlassFish,      | |
| +------------------+ |       | |  JBoss/WildFly)  | |
|                      |       | +------------------+ |
+----------------------+       |                      || +------------------+ || | Other Enterprise | || | Features (EJB,   | || | Transactions,    | || | Messaging, etc.) | || +------------------+ |+----------------------+

Content Type

Content-Type是HTTP协议中的一个Header字段,用于指示发送给接收者的数据的媒体类型(MIME类型)。它告诉客户端或服务器如何解释和处理请求或响应中的数据。Content-Type在HTTP请求和响应中都可以使用。

常见Content-Type如下:

  1. 文本类型:

    • text/html:HTML文档
    • text/plain:纯文本
    • text/css:CSS样式表
    • text/javascript:JavaScript代码
  2. 应用类型:

    • application/json:JSON格式的数据
    • application/xml:XML格式的数据
    • application/x-www-form-urlencoded:表单数据,通常用于POST请求
    • application/octet-stream:二进制数据流,通常用于文件下载
  3. 多部分类型:

    • multipart/form-data:用于表单文件上传,表单数据可以包含文件
    • multipart/byteranges:表示响应包含多个部分,每个部分是一个字节范围
  4. 图像类型:

    • image/jpeg:JPEG图像
    • image/png:PNG图像
    • image/gif:GIF图像
  5. 音频和视频类型:

    • audio/mpeg:MPEG音频文件
    • video/mp4:MP4视频文件

参考资料:

https://www.javatpoint.com/web-terminology

ChatGPT

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

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

相关文章

【计算机组成原理实验】——实验 MIPS 指令系统和 MIPS 体系结构

实验 MIPS 指令系统和 MIPS 体系结构 一、实验目的 了解和熟悉指令级模拟器。 熟练掌握 MIPSsim 模拟器的操作和使用方法。 熟悉 MIPS 指令系统及其特点,加深对 MIPS 指令操作语义的理解。 熟悉 MIPS 体系结构。 二、实验平台 实验平台采用指令级和流水线操作…

通用的职位招聘小程序ui模板

蓝色简单的校园招聘,行业招聘,职位招聘手机小程序页面模板。包含:职位列表、职位详情、基本信息填写、登录、个人主页、消息页面等功能 通用的职位招聘小程序ui模板

洛谷 P3613 学习用map代替大大大数组的好题

题目链接:P3613 【深基15.例2】寄包柜 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 题目截图: 题意分析: 非常简单的存入和取出操作 唯一的 “难点” 在于 数组开不到 a[100007][100007],会暴内存 非常巧妙的引入 map 来解决…

详解Java垃圾回收(GC)机制

一、为什么需要垃圾回收 如果不进行垃圾回收,内存迟早都会被消耗空,因为我们在不断的分配内存空间而不进行回收。除非内存无限大,我们可以任性的分配而不回收,但是事实并非如此。所以,垃圾回收是必须的。 二、哪些内…

【Java】了解异常

初始异常 我们平时应该已经接触过一些 “异常” 了,这里列举一些例子。 算术异常: 数组下标越界异常: 访问空指针异常: 所谓异常指的就是程序在 运行时 出现错误时通知调用者的一种机制。 异常的基本用法 捕获异常 try{ 有可能…

Open3D 删除点云中重叠的点(方法一)

目录 一、概述 二、代码实现 三、实现效果 3.1原始点云 3.2处理后的点云 3.3计算结果 一、概述 在点云处理中,重叠点(即重复点)可能会对数据分析和处理的结果产生负面影响。因此,删除重叠点是点云预处理中常见且重要的步骤。…

缺失行处理(R和python)

R(complete.cases) rm(listls()) # 创建一个包含缺失值的数据框 # df <- data.frame( # x c(1, 2, NA, 4), # y c(NA, 2, 3, 4), # z c(1, NA, 3, 3) # ) # # # 使用complete.cases函数筛选包含缺失值的数据行 # missing_rows <- !complete.cases(df) # # # …

Java的垃圾回收机制解说

Java 内存运行时区域中的程序计数器、虚拟机栈、本地方法栈随线程而生灭&#xff1b;栈中的栈帧随着方法的进入和退出而有条不紊地执行着出栈和入栈操作。每一个栈帧中分配多少内存基本上是在类结构确定下来时就已知的&#xff08;尽管在运行期会由 JIT 编译器进行一些优化&…

使用vue3-treeselect问题

1.当vue3-treeselect是单选时&#xff0c;使用watch监听绑定value&#xff0c;无法监听到值清空 对照后将:value改为v-model&#xff0c;如图 2.使用vue3-treeselect全部清空按钮如何置空select的值&#xff0c;使用watch监听 多选&#xff1a;pageInfo.officeName(val) {// …

【手写数据库内核组件】0201 哈希表hashtable的实战演练,多种非加密算法,hash桶的冲突处理,查找插入删除操作的代码实现

hash表原理与实战 ​专栏内容&#xff1a; postgresql使用入门基础手写数据库toadb并发编程 个人主页&#xff1a;我的主页 管理社区&#xff1a;开源数据库 座右铭&#xff1a;天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物. 文章目录 hash表…

【TB作品】51单片机 Proteus仿真 MAX7219点阵驱动数码管驱动

1、8乘8点阵模块&#xff08;爱心&#xff09; 数码管测试程序与仿真 实验报告: MAX7219 数码管驱动测试 一、实验目的 通过对 MAX7219 芯片的编程与控制&#xff0c;了解如何使用单片机驱动数码管显示数字&#xff0c;并掌握 SPI 通信协议的基本应用。 二、实验器材 51…

多项式求和之九(给定程序中函数 fun 的功能是:求出以下分数序列的前 n 项之和,并通过函数值返回 main 函数。)

代码 #include <stdio.h> /********found********/ double fun(int n){double a2,b1,c,s0;while(n>0){n--; /********found********/ssa/b;ca;aab;bc;}return s; } void main(){int n;scanf("%d",&n);printf("%lf\n",fun(n)); }友情提示 1、…

期末上分站——计组(5)

简答题11-21 11、为了提高计算机系统的输入/输出能力&#xff0c;可以在总线的设计与实现中采用哪些方案&#xff1f; 答&#xff1a;1. 提高总线时钟频率 2. 增加数据总线的位数 3. 采用成组数据传送&#xff08;BURST传送&#xff09;方式 4. 采用多总线结构 5. 优化总线传输…

微深节能 煤码头自动化翻堆及取料集控系统 格雷母线

微深节能格雷母线高精度位移测量系统是一种先进的工业自动化位置检测解决方案&#xff0c;它被广泛应用于煤码头自动化翻堆及取料集控系统中&#xff0c;以实现对斗轮堆取料机等大型机械设备的精准定位和自动化控制。 系统原理简述&#xff1a; 格雷母线系统的工作原理基于电磁…

EOF 为 (End Of File) 的缩写 , 值通常为 -1

EOF是一个计算机术语&#xff0c;为 End Of File 的缩写 EOF 的值通常为 -1 EOF 的值通常为 -1&#xff0c;但它依系统有所不同。巨集 EOF会在编译原始码前展开实际值给预处理器。 与 feof 与 feof C语言中&#xff0c;当把数据以二进制形式存放到文件中时&#xff0c;就会有…

阿里云ecs服务器,nginx多域名多项目部署教程,含本地部署教程

nginx多域名部署项目 本地部署线上部署 一、本地部署 第一步&#xff1a; winr 输入drivers 打开hosts文件&#xff0c;编辑 加行 127.0.0.1 自定义域名 … 第二步&#xff1a; 下载 nginx 安装好以后 打开ngin安装目录&#xff0c;选择nginx.conf 打开 #user Administ…

前端面试题10(js多位数组变一维数组)

1. 使用concat()和递归 function flatten(arr) {return arr.reduce((acc, val) > Array.isArray(val) ? acc.concat(flatten(val)) : acc.concat(val), []); }let multiDimArray [[1, 2, [3]], 4]; let flatArray flatten(multiDimArray); console.log(flatArray); // 输…

C++ STL IO流介绍

目录 一:IO流的继承关系: 二:输入输出功能 1. 基本用法 2. 格式化输入 3.非格式化输入 4. 格式化输出 三:流 1. 字符流 2. 向字符流中写入数据 3. 从字符流中读出数据 4. 清空字符流 5.完整的例子 四:文件流 一:IO流的继承关系: 类含义basic_streambuf 读取…

动态规划|剑指 Offer II 093. 最长斐波那契数列

如果数组 arr 中存在三个下标 i、j、k 满足 arr[i]>arr[j]>arr[k] 且 arr[k]arr[j]arr[i]&#xff0c;则 arr[k]、arr[j] 和 arr[i] 三个元素组成一个斐波那契式子序列。由于数组 arr 严格递增&#xff0c;因此 arr[i]>arr[j]>arr[k] 等价于 i>j>k。 把这道题…

【qt】TCP的监听 (设置服务器IP地址和端口号)

TCP监听是在自己的IP地址上进行的。 当一个TCP服务器程序启动时&#xff0c;它会绑定到一个特定的IP地址和一个端口号上&#xff0c;以便可以接收来自该IP地址和端口号的传入连接请求. 所以我们要先来获取主机的IP地址和设置端口号. 注意: 服务器程序无法任意设置IP地址&…