java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > JavaWeb基础概念

JavaWeb基础概念以及与架构之间有哪些区别

作者:guslegend

JavaWeb是基于Java技术栈开发的Web应用,SpringMVC是实现JavaWeb的一种框架,C/S架构和B/S架构的区别主要在客户端形式、开发维护成本、响应速度和跨平台能力,本文介绍JavaWeb基础概念以及与架构之间有哪些区别,感兴趣的朋友跟随小编一起看看吧

什么是JavaWeb?架构之间有哪些区别?

Java Web 定义:

对比维度

C/S 架构(客户端 / 服务器)

B/S 架构(浏览器 / 服务器)

客户端形式

专用软件(需安装,适配特定系统)

通用浏览器(无需安装,跨设备兼容)

开发维护成本

高(多平台开发,客户端逐个升级)

低(仅维护服务器,升级同步所有用户)

响应速度

快(本地处理部分逻辑,减少网络传输)

较慢(依赖网络与服务器,高并发易卡顿)

跨平台能力

差(不同系统需单独开发客户端)

好(支持所有带浏览器的设备)

典型应用

游戏客户端、专业工具(如 Photoshop)

电商网站、在线文档、政务平台

用户使用门槛

高(需安装,对设备配置有要求)

低(输入 URL 即可访问,低配置设备可用)

Web工作的原理

第1步:用户发起请求(输入URL):在浏览器输入访问地址

第2步:域名解析(将域名转为IP地址):依赖DNS(域名系统)

第3步:建立TPC连接:通过TPC协议建立可靠网络连接(三次握手🤝

第4步:发送HTTP请求

第5步:服务器处理请求并返回响应

第6步:关闭TCP连接:浏览器没有请求其他资源,会发生四次挥手

第7步:浏览器解析并渲染页面

HTTP和HTTPS核心区别

HTTP 的明文传输存在 “窃听、篡改、伪造” 风险,HTTPS 通过 “TLS/SSL 加密” 解决此问题,两者核心区别如下:

对比维度

HTTP

HTTPS

默认端口

80

443

数据传输

明文(可被抓包工具直接查看)

TLS/SSL 加密(抓包仅见密文)

安全性

低(无加密、无身份验证)

高(加密 + 服务器身份验证,需 CA 证书)

性能开销

无加密 / 解密开销,速度快

需 TLS 握手、加密 / 解密,性能略低(可优化)

证书要求

无需证书

需 CA 机构颁发的 SSL 证书(免费 / 付费)

适用场景

非敏感数据(如静态文档、内部系统)

敏感数据(如登录、支付、电商、个人信息)

HTTP消息结构-请求

什么是http消息结构?

请求报文结构

请求行详解

GET /user?page=1&size=10 HTTP/1.1  # GET请求:查询第1页用户,每页10条
POST /api/login HTTP/1.1           # POST请求:提交登录数据

常见请求头(核心元数据)

请求头字段

作用说明

示例

Host

服务器域名 + 端口(HTTP/1.1 必需,区分虚拟主机)

Host: example.com:8080

User-Agent

客户端身份(浏览器 / 设备信息,用于服务器适配)

User-Agent: Mozilla/5.0 (Windows NT 10.0; ...)

Accept

客户端可接受的响应数据类型

Accept: text/html, application/json

Content-Type

请求体的数据类型(POST/PUT 时必需)

Content-Type: application/json

Content-Length

请求体的字节长度(帮助服务器接收完整数据)

Content-Length: 56

Cookie

客户端存储的 Cookie(用于会话管理)

Cookie: sessionId=abc123; username=test

Connection

是否复用 TCP 连接(HTTP/1.1 默认keep-alive

Connection: keep-alive

请求体示例(POST/PUT 方法)

Content-Type: application/x-www-form-urlencoded

):text

username=admin&password=123456&remember=true
Content-Type: application/json

):json

{
  "username": "admin",
  "password": "123456",
  "remember": true
}

HTTP消息结构-响应

响应报文结构

响应行详解

HTTP/1.1 200 OK              # 请求成功
HTTP/1.1 404 Not Found       # 资源不存在
HTTP/1.1 500 Internal Server Error  # 服务器内部错误

常见响应头(核心元数据)

响应头字段

作用说明

示例

Content-Type

响应体的数据类型 + 编码(客户端解析依据)

Content-Type: text/html; charset=UTF-8

Content-Length

响应体的字节长度

Content-Length: 2048

Server

服务器软件信息(如 Web 服务器类型)

Server: Nginx/1.21.0

Set-Cookie

服务器向客户端写入 Cookie(会话管理)

Set-Cookie: sessionId=xyz789; Max-Age=3600

Location

重定向的目标 URL(配合 3xx 状态码使用)

Location: /login

Cache-Control

缓存控制策略(如缓存有效期)

Cache-Control: max-age=86400

Retry-After

服务不可用时,建议重试的时间(秒,配合 503)

Retry-After: 3600

响应体示例

Content-Type: text/html

):html

<!DOCTYPE html>
<html>
  <head>
    <title>首页</title>
  </head>
  <body>
    <h1>欢迎访问HTTP协议讲解页面!</h1>
    <p>当前时间:2024-01-01 12:00:00</p>
  </body>
</html>
Content-Type: application/json

):json

{
  "code": 200,
  "message": "请求成功",
  "data": {
    "username": "admin",
    "role": "admin",
    "createTime": "2024-01-01"
  }
}

HTTP请求方法

HTTP 请求方法定义

核心方法如下:

请求方法

核心语义

关键特点

典型应用场景

GET

查询资源

1. 请求参数在 URL 中(可见);2. 无请求体;3. 幂等;4. 有 URL 长度限制(约 2KB)

访问页面、查询列表(如/user?page=1

POST

提交资源(创建)

1. 请求参数在请求体中(不可见);2. 非幂等;3. 无长度限制

表单提交、用户注册、登录

PUT

全量更新资源

1. 需提供资源的完整信息;2. 幂等;3. 覆盖式更新

全量修改用户信息(如PUT /user/1

DELETE

删除资源

1. 无请求体(或仅传辅助参数);2. 幂等

删除用户(DELETE /user/1

)、删除文章

PATCH

部分更新资源

1. 仅需提供需修改的字段;2. 幂等

仅更新用户手机号(PATCH /user/1

HEAD

获取资源头部

与 GET 一致,但无响应体(仅返回头信息)

检查资源是否存在、获取缓存信息

关键概念:幂等性

重点:GET 与 POST 的核心区别

对比维度

GET

POST

数据位置

URL 参数(?key=value

请求体(Form/JSON)

安全性

明文传输(不安全,易被抓包)

数据在请求体(相对安全,需配合 HTTPS)

幂等性

幂等(适合查询)

非幂等(适合提交)

缓存支持

浏览器默认缓存(可通过头控制)

默认不缓存

长度限制

受 URL 长度限制(约 2KB)

无限制

HTTP状态码

什么是HTTP状态码?

HTTP 状态码分为 5 大类,每类代表不同的 “请求处理状态”,开发中需重点掌握常用状态码:

状态码分类

核心含义

常用状态码及说明

1xx

信息性(临时响应)

100 Continue:服务器已接收请求头,客户端可继续发送请求体(多用于大文件 POST)

2xx

成功

200 OK:请求成功(最常用);201 Created:资源创建成功(如 POST 新增用户);204 No Content:请求成功但无响应体(如 DELETE)

3xx

重定向(需额外操作)

301 Moved Permanently:永久重定向(如域名变更);302 Found:临时重定向(如未登录跳登录页);304 Not Modified:资源未修改,使用本地缓存

4xx

客户端错误

400 Bad Request:请求语法错误(如 JSON 格式错);401 Unauthorized:未认证(未登录);403 Forbidden:权限不足(如普通用户访问管理员接口);404 Not Found:资源不存在(URL 错);405 Method Not Allowed:请求方法不允许(如用 POST 访问 GET 接口)

5xx

服务器错误

500 Internal Server Error:服务器内部错误(如代码 BUG);502 Bad Gateway:网关错误(如 Nginx 连不上 Tomcat);503 Service Unavailable:服务暂时不可用(如维护、负载过高);504 Gateway Timeout:网关超时(如 Tomcat 处理太慢)

HTPP版本演进

HTTP 协议不断迭代,核心目标是 “提升性能、优化体验”,各 HTTP 版本核心差异对比:

版本

发布时间

核心传输层

关键特性

主要痛点

当前应用占比(2025)

HTTP/0.9

1991

TCP

仅 GET、纯 HTML、短连接

功能极简,无错误处理

0%(淘汰)

HTTP/1.0

1996

TCP

多方法、HTTP 头部、多媒体

短连接默认,无缓存

<1%(老旧设备)

HTTP/1.1

1999

TCP

长连接、管道化、缓存机制

队头阻塞、头部冗余

40%-50%

HTTP/2

2015

TCP

二进制帧(拆分消息为二进制格式的小块)、多路复用(同时传输多个 HTTP 请求 / 响应)、HPACK(头部压缩算法)

TCP 队头阻塞

45%-55%

HTTP/3

2022

UDP(QUIC)

无队头阻塞、0-RTT、连接迁移

兼容性需完善

10%-20%

关键问题:HTTP/1.1 的 “队头阻塞”

到此这篇关于JavaWeb基础概念以及与架构之间有哪些区别的文章就介绍到这了,更多相关JavaWeb基础概念内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文