首页 > 编程语言 >JavaWeb开发基础7个Web术语解析

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

时间:2024-07-06 16:52:31浏览次数:18  
标签:Web 应用服务器 HTTP JavaWeb 解析 Servlet 连接 请求

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

标签:Web,应用服务器,HTTP,JavaWeb,解析,Servlet,连接,请求
From: https://www.cnblogs.com/df888/p/18274473

相关文章

  • 01 Web基础与HTTP协议
    1.1Web基础本章将介绍Web基础知识,包括域名的概念、DNS原理、静态网页和动态网页的相关知识。1.1.1.域名概述1.域名的概念ip地址不易记忆2.早期使用host文件解析域名主机名重复主机维护困难3.DNS分布式层次式4.域名空间结构根域顶级域组织域国家域二级域名FQDN......
  • SpringBoot引入WebSocket
    WebSocket是一种在客户端和服务器之间提供低延迟、全双工通信的网络协议。它允许双方在建立一次连接后,进行实时、持续的数据交换,无需像HTTP那样为每一个请求和响应建立新的连接。WebSocket的设计初衷是解决传统HTTP协议在实时通信方面的不足,比如实现实时聊天、游戏、股票报价等......
  • appium自动化测试报错:Unable to launch com.facebook.WebDriverAgentRunner.maukkaki.
    嗨,我是兰若,今天在编写自动化测试用例的时候,appiuminspector报错:Unabletolaunchcom.facebook.WebDriverAgentRunner.maukkaki.xctrunner1、当时首先想到的就是检查WebDriverAgent的构建和安装是否正常,后来发现这块的安装是完全按照官方文档进行的,并且彼时我的手机上已经......
  • 一个基于Flask框架的Python Web应用程序
    dashboard.py主要实现了以下功能:1.用户注册与登录:提供了用户注册和登录的功能,用户的密码会被哈希处理后存储在users.json文件中。2.文件管理:实现了简单的文件管理功能,包括列出文件夹中的文件、上传文件和删除文件。只有管理员用户才能进行文件管理操作。3,路由定义:定义了......
  • 使用WebSocket和C语言实现一个简单的计算器
    在现代Web开发中,WebSocket已经成为实时通信的重要工具。本文将介绍如何使用WebSocket与C语言结合,实现一个简单的计算器应用。我们将通过Go语言作为中间层,调用C语言编写的计算函数,并通过WebSocket与前端进行交互。在使用本文章代码开发过程中遇到问题,可参考博主的另外两篇博客......
  • Webpack: 使用 SplitChunks提升应用性能
    概述Webpack默认会将尽可能多的模块代码打包在一起,优点是能减少最终页面的HTTP请求数,但缺点也很明显:页面初始代码包过大,影响首屏渲染性能;无法有效应用浏览器缓存,特别对于NPM包这类变动较少的代码,业务代码哪怕改了一行都会导致NPM包缓存失效。为此,Webpack提供了S......
  • Dubbo 2.7 源码解析 - 之 远程调用
    Dubbo2.7中的远程调用是其核心功能之一,涉及从客户端发起请求到服务端处理并返回结果的整个过程。这个过程高度抽象且灵活,支持多种协议、序列化方式和负载均衡策略。以下是远程调用的关键流程和相关源码解析:远程调用流程概览构建请求:消费者通过代理对象(由ProxyFactory创......
  • web前端概述
    文章目录Web前端概述HTML简史HTML5新特性使用标签承载内容结构文本列表(list)链接(anchor)图像(image)表格(table)表单(form)音视频(audio/video)窗口(frame)其他使用CSS渲染页面简介颜色(color)文本(text/font)盒子(boxmodel)列表、表格和表单图像布局使用JavaScript控制行为JavaScr......
  • 运用Python与Keras框架打造深度学习图像分类应用:详尽步骤与代码实例解析
    引言随着深度学习技术的飞速发展,其在图像识别和分类领域的应用日益广泛。在这一背景下,Python因其丰富的数据科学库和强大的生态系统而成为首选编程语言之一。在本文中,我们将深入探讨如何使用Python和其中的Keras深度学习框架来完成一个实际的图像分类任务。我们将通过详细的代......
  • serverpod 基于dart 的flutter 下一代app 以及web server 开发框架
    serverpod按照官方的介绍是基于dart的flutter下一代app以及webserver开发框架包含的能力代码生成 可以辅助通过分析server端代码生成客户端代码,这样调用就比较方便了trpc就干了这类的事情世界一流的日志处理内置cache 内置cache可以减少数据库的开销简单方便使用......