最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JavaWeb基礎概念以及與架構之間有哪些區(qū)別

 更新時間:2025年12月24日 09:44:24   作者:guslegend  
JavaWeb是基于Java技術棧開發(fā)的Web應用,SpringMVC是實現(xiàn)JavaWeb的一種框架,C/S架構和B/S架構的區(qū)別主要在客戶端形式、開發(fā)維護成本、響應速度和跨平臺能力,本文介紹JavaWeb基礎概念以及與架構之間有哪些區(qū)別,感興趣的朋友跟隨小編一起看看吧

什么是JavaWeb?架構之間有哪些區(qū)別?

Java Web 定義:

  • JavaWeb是基于Java技術棧開發(fā)的Web應用的總稱;
  • Web(World Wide Web,中文為萬維網(wǎng))是一種基于互聯(lián)網(wǎng)的信息服務系統(tǒng);
  • 核心是通過瀏覽器訪問全球各地服務器上的資源;
  • 我們日常用瀏覽器刷網(wǎng)頁,看新聞,在線工具都是用的web服務器;
  • 本質是java技術與web架構的結合,是企業(yè)級web應用開發(fā)的主流方向之一;
  • SpringMVC是基于Javaweb實現(xiàn)的。

對比維度

C/S 架構(客戶端 / 服務器)

B/S 架構(瀏覽器 / 服務器)

客戶端形式

專用軟件(需安裝,適配特定系統(tǒng))

通用瀏覽器(無需安裝,跨設備兼容)

開發(fā)維護成本

高(多平臺開發(fā),客戶端逐個升級)

低(僅維護服務器,升級同步所有用戶)

響應速度

快(本地處理部分邏輯,減少網(wǎng)絡傳輸)

較慢(依賴網(wǎng)絡與服務器,高并發(fā)易卡頓)

跨平臺能力

差(不同系統(tǒng)需單獨開發(fā)客戶端)

好(支持所有帶瀏覽器的設備)

典型應用

游戲客戶端、專業(yè)工具(如 Photoshop)

電商網(wǎng)站、在線文檔、政務平臺

用戶使用門檻

高(需安裝,對設備配置有要求)

低(輸入 URL 即可訪問,低配置設備可用)

Web工作的原理

第1步:用戶發(fā)起請求(輸入URL):在瀏覽器輸入訪問地址

  • 瀏覽器解析URL核心信息,協(xié)議,域名,資源路徑。

第2步:域名解析(將域名轉為IP地址):依賴DNS(域名系統(tǒng))

  • 優(yōu)先查詢?yōu)g覽器本地DNS緩存;
  • 如果本地沒有緩存,查詢路由器DNS緩存;
  • 仍無結果則向運營商DNS服務器發(fā)起查詢;
  • 運營商DNS服務器向DNS服務器查詢;

第3步:建立TPC連接:通過TPC協(xié)議建立可靠網(wǎng)絡連接(三次握手??

  • 客戶端(瀏覽器)向服務器發(fā)生"請求連接"數(shù)據(jù)包;
  • 服務器接受后,返回"同意連接"數(shù)據(jù)包;
  • 客戶端確認收到響應,發(fā)送"連接確認"數(shù)據(jù)包,TCP連接正式建立;

第4步:發(fā)送HTTP請求

  • 請求內容組成:
    • 請求方法:GET(獲取首頁 HTML 等資源)、POST(提交登錄表單等數(shù)據(jù));
    • 請求頭:包含瀏覽器信息(如 Chrome 版本)、Cookie(登錄狀態(tài))、期望響應格式(如 HTML、JSON);
    • 請求體:僅 POST 請求包含(如加密后的用戶名、密碼)。
  • HTTP定義
    • HTTP(HyperText Transfer Protocol,超文本傳輸協(xié)議)是應用層的核心協(xié)議
    • 用于客戶端(如瀏覽器、Postman)與服務器之間傳輸超文本數(shù)據(jù)(HTML、圖片、視頻、JSON 等)
    • 是萬維網(wǎng)(WWW)服務的基礎。
    • 瀏覽器與服務器的通信全依賴 HTTP 協(xié)議
    • 它定義了 “請求該發(fā)什么”“響應該怎么回” 的規(guī)則。

第5步:服務器處理請求并返回響應

  • 服務器協(xié)同處理流程:
    • 應用服務器(如 Nginx)解析請求(識別需返回首頁資源);
    • 若需數(shù)據(jù)支撐(如首頁推薦內容),應用服務器向數(shù)據(jù)庫服務器發(fā)起查詢;
    • 數(shù)據(jù)庫服務器返回數(shù)據(jù)(如推薦新聞、圖片鏈接);
    • 應用服務器生成響應內容(HTML 代碼、CSS 樣式、JS 腳本),經(jīng) HTTPS 加密后返回瀏覽器;
  • 響應內容組成:
    • 響應狀態(tài)碼:200(成功)、404(資源不存在)、500(服務器錯誤)等;
    • 響應頭:包含服務器信息(如 Nginx 版本)、數(shù)據(jù)類型(text/html表示 HTML 頁面)、緩存規(guī)則;
    • 響應體:核心資源(HTML 代碼、圖片二進制數(shù)據(jù)等)。

第6步:關閉TCP連接:瀏覽器沒有請求其他資源,會發(fā)生四次揮手

  • 客戶端發(fā)生"關閉連接"請求;
  • 服務器放回"準備關閉"響應,等待剩余數(shù)據(jù)傳輸;
  • 服務器確認無剩余數(shù)據(jù),發(fā)生"關閉連接"請求;
  • 客戶端返回"確認關閉"響應。TCP連接正式關閉;

第7步:瀏覽器解析并渲染頁面

  • 解析 HTML:生成 DOM 樹(描述頁面結構,如標題、按鈕位置);
  • 解析 CSS:生成 CSSOM 樹(定義頁面樣式,如字體大小、顏色);
  • 結合 DOM 樹與 CSSOM 樹,生成渲染樹(僅包含需顯示的元素及樣式);
  • 布局(Layout):計算渲染樹中元素的位置和大??;
  • 繪制(Paint):根據(jù)布局結果將元素繪制到瀏覽器窗口(填充顏色、渲染圖片);
  • 執(zhí)行 JavaScript:運行頁面 JS 腳本(如搜索框自動補全功能),動態(tài)修改頁面內容(更新 DOM 樹、發(fā)送異步請求)。

HTTP和HTTPS核心區(qū)別

HTTP 的明文傳輸存在 “竊聽、篡改、偽造” 風險,HTTPS 通過 “TLS/SSL 加密” 解決此問題,兩者核心區(qū)別如下:

對比維度

HTTP

HTTPS

默認端口

80

443

數(shù)據(jù)傳輸

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

TLS/SSL 加密(抓包僅見密文)

安全性

低(無加密、無身份驗證)

高(加密 + 服務器身份驗證,需 CA 證書)

性能開銷

無加密 / 解密開銷,速度快

需 TLS 握手、加密 / 解密,性能略低(可優(yōu)化)

證書要求

無需證書

需 CA 機構頒發(fā)的 SSL 證書(免費 / 付費)

適用場景

非敏感數(shù)據(jù)(如靜態(tài)文檔、內部系統(tǒng))

敏感數(shù)據(jù)(如登錄、支付、電商、個人信息)

HTTP消息結構-請求

什么是http消息結構?

  • HTTP 消息是客戶端與服務器通信的 “數(shù)據(jù)載體”
  • 遵循 “起始行 + 頭部字段 + 空行 + 消息體” 的格式(空行是必需的,用于分隔頭部和消息體)

請求報文結構

  • 請求報文由客戶端發(fā)送給服務器,格式如下:
    • 請求行(必需):定義請求方法、目標資源、HTTP版本
    • 請求頭(可選):描述請求的元數(shù)據(jù)(鍵值對形式)
    • 空行(必需):標識請求頭結束
    • 請求體(可選):攜帶請求數(shù)據(jù)(如表單、JSON,但get方法不推薦攜帶請求體,卻沒有嚴格禁止)

請求行詳解

  • 格式:請求方法 + 請求URI + HTTP版本
  • 請求方法:定義對資源的操作(如 GET = 查詢、POST = 提交);
  • 請求 URI:目標資源路徑(如/api/user、/index.html);
  • HTTP 版本:如HTTP/1.1(最常用)、HTTP/2、HTTP/3。
  • 示例:
GET /user?page=1&size=10 HTTP/1.1  # GET請求:查詢第1頁用戶,每頁10條
POST /api/login HTTP/1.1           # POST請求:提交登錄數(shù)據(jù)
  • 使用瀏覽器開發(fā)者工具查看結構信息

常見請求頭(核心元數(shù)據(jù))

請求頭字段

作用說明

示例

Host

服務器域名 + 端口(HTTP/1.1 必需,區(qū)分虛擬主機)

Host: example.com:8080

User-Agent

客戶端身份(瀏覽器 / 設備信息,用于服務器適配)

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

Accept

客戶端可接受的響應數(shù)據(jù)類型

Accept: text/html, application/json

Content-Type

請求體的數(shù)據(jù)類型(POST/PUT 時必需)

Content-Type: application/json

Content-Length

請求體的字節(jié)長度(幫助服務器接收完整數(shù)據(jù))

Content-Length: 56

Cookie

客戶端存儲的 Cookie(用于會話管理)

Cookie: sessionId=abc123; username=test

Connection

是否復用 TCP 連接(HTTP/1.1 默認keep-alive

Connection: keep-alive

請求體示例(POST/PUT 方法)

  • 表單數(shù)據(jù)格式(
Content-Type: application/x-www-form-urlencoded

):text

username=admin&password=123456&remember=true
  • JSON 格式(
Content-Type: application/json

):json

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

HTTP消息結構-響應

響應報文結構

  • 響應報文由服務器返回給客戶端,格式如下:text
    • 響應行(必需):定義HTTP版本、狀態(tài)碼、原因短語
    • 響應頭(可選):描述響應的元數(shù)據(jù)(鍵值對形式)
    • 空行(必需):標識響應頭結束
    • 響應體(可選):服務器返回的實際數(shù)據(jù)(如HTML、JSON)

響應行詳解

  • 格式:HTTP版本 + 狀態(tài)碼 + 原因短語
  • 狀態(tài)碼:3 位數(shù)字,標識請求處理結果(如 200 = 成功、404 = 資源不存在);
  • 原因短語:狀態(tài)碼的文字描述(僅輔助理解,程序不依賴)。
  • 示例:text
HTTP/1.1 200 OK              # 請求成功
HTTP/1.1 404 Not Found       # 資源不存在
HTTP/1.1 500 Internal Server Error  # 服務器內部錯誤

常見響應頭(核心元數(shù)據(jù))

響應頭字段

作用說明

示例

Content-Type

響應體的數(shù)據(jù)類型 + 編碼(客戶端解析依據(jù))

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

Content-Length

響應體的字節(jié)長度

Content-Length: 2048

Server

服務器軟件信息(如 Web 服務器類型)

Server: Nginx/1.21.0

Set-Cookie

服務器向客戶端寫入 Cookie(會話管理)

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

Location

重定向的目標 URL(配合 3xx 狀態(tài)碼使用)

Location: /login

Cache-Control

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

Cache-Control: max-age=86400

Retry-After

服務不可用時,建議重試的時間(秒,配合 503)

Retry-After: 3600

響應體示例

  • HTML 格式(
Content-Type: text/html

):html

<!DOCTYPE html>
<html>
  <head>
    <title>首頁</title>
  </head>
  <body>
    <h1>歡迎訪問HTTP協(xié)議講解頁面!</h1>
    <p>當前時間:2024-01-01 12:00:00</p>
  </body>
</html>
  • JSON 格式(
Content-Type: application/json

):json

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

HTTP請求方法

HTTP 請求方法定義

  • HTTP 請求方法是客戶端(如瀏覽器、APP、接口調用工具)向服務器發(fā)送請求時,聲明 “請求目的” 的標準化指令
  • 它定義了客戶端希望服務器對目標資源執(zhí)行的操作(如 “獲取資源”“提交數(shù)據(jù)”“更新信息”)。
  • 作為 HTTP 協(xié)議的核心組成部分,請求方法的設計遵循 “語義化” 原則
    • 不同方法對應明確的操作含義,確??蛻舳伺c服務器之間的溝通統(tǒng)一、無歧義
    • 同時也影響服務器的處理邏輯(如緩存策略、數(shù)據(jù)修改權限)。

核心方法如下:

請求方法

核心語義

關鍵特點

典型應用場景

GET

查詢資源

1. 請求參數(shù)在 URL 中(可見);2. 無請求體;3. 冪等;4. 有 URL 長度限制(約 2KB)

訪問頁面、查詢列表(如/user?page=1

POST

提交資源(創(chuàng)建)

1. 請求參數(shù)在請求體中(不可見);2. 非冪等;3. 無長度限制

表單提交、用戶注冊、登錄

PUT

全量更新資源

1. 需提供資源的完整信息;2. 冪等;3. 覆蓋式更新

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

DELETE

刪除資源

1. 無請求體(或僅傳輔助參數(shù));2. 冪等

刪除用戶(DELETE /user/1

)、刪除文章

PATCH

部分更新資源

1. 僅需提供需修改的字段;2. 冪等

僅更新用戶手機號(PATCH /user/1

HEAD

獲取資源頭部

與 GET 一致,但無響應體(僅返回頭信息)

檢查資源是否存在、獲取緩存信息

關鍵概念:冪等性

  • 指 “多次執(zhí)行相同請求,結果完全一致(無副作用)”。例如:GET 查詢 100 次,結果相同;DELETE 刪除 100 次,第一次刪完后,后續(xù) 99 次仍返回 “刪除成功”(無額外副作用)。

重點:GET 與 POST 的核心區(qū)別

對比維度

GET

POST

數(shù)據(jù)位置

URL 參數(shù)(?key=value

請求體(Form/JSON)

安全性

明文傳輸(不安全,易被抓包)

數(shù)據(jù)在請求體(相對安全,需配合 HTTPS)

冪等性

冪等(適合查詢)

非冪等(適合提交)

緩存支持

瀏覽器默認緩存(可通過頭控制)

默認不緩存

長度限制

受 URL 長度限制(約 2KB)

無限制

HTTP狀態(tài)碼

什么是HTTP狀態(tài)碼?

  • HTTP 狀態(tài)碼(HTTP Status Code)是服務器對客戶端(如瀏覽器、APP)發(fā)送的 HTTP 請求的響應狀態(tài)標識
  • 由 3 位數(shù)字組成(范圍 100-599)
  • 它的核心作用是:讓客戶端快速判斷請求的處理結果(成功、失敗、需要進一步操作等)
  • 無需解析響應體內容即可了解基本狀態(tài),同時為問題排查(如 “為什么頁面打不開”“為什么登錄失敗”)提供明確方向。

HTTP 狀態(tài)碼分為 5 大類,每類代表不同的 “請求處理狀態(tài)”,開發(fā)中需重點掌握常用狀態(tài)碼:

狀態(tài)碼分類

核心含義

常用狀態(tài)碼及說明

1xx

信息性(臨時響應)

100 Continue:服務器已接收請求頭,客戶端可繼續(xù)發(fā)送請求體(多用于大文件 POST)

2xx

成功

200 OK:請求成功(最常用);201 Created:資源創(chuàng)建成功(如 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:網(wǎng)關錯誤(如 Nginx 連不上 Tomcat);503 Service Unavailable:服務暫時不可用(如維護、負載過高);504 Gateway Timeout:網(wǎng)關超時(如 Tomcat 處理太慢)

HTPP版本演進

HTTP 協(xié)議不斷迭代,核心目標是 “提升性能、優(yōu)化體驗”,各 HTTP 版本核心差異對比:

版本

發(fā)布時間

核心傳輸層

關鍵特性

主要痛點

當前應用占比(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 的 “隊頭阻塞”

  • 指 “同一 TCP 連接中,前一個請求未完成,后續(xù)請求必須排隊等待”—— 若前一個請求超時,后續(xù)所有請求都卡住。HTTP/2 的多路復用通過 “二進制幀拆分” 解決此問題。

到此這篇關于JavaWeb基礎概念以及與架構之間有哪些區(qū)別的文章就介紹到這了,更多相關JavaWeb基礎概念內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Junit springboot打印測試方法信息

    Junit springboot打印測試方法信息

    這篇文章主要介紹了Junit springboot打印測試方法信息,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-04-04
  • java 輸入一個數(shù)字組成的數(shù)組(輸出該數(shù)組的最大值和最小值)

    java 輸入一個數(shù)字組成的數(shù)組(輸出該數(shù)組的最大值和最小值)

    這篇文章主要介紹了java 輸入一個數(shù)字組成的數(shù)組,輸出該數(shù)組的最大值和最小值,需要的朋友可以參考下
    2017-02-02
  • IDEA的maven設置代理方式

    IDEA的maven設置代理方式

    文章介紹了如何設置IntelliJ?IDEA系統(tǒng)代理,并在Maven的Importing和Runner中添加代理配置,包括設置代理主機和端口
    2025-01-01
  • SpringBoot自動裝配原理及過程解讀

    SpringBoot自動裝配原理及過程解讀

    文章解析SpringBoot自動裝配機制,結合SPI源碼分析與手寫Starter實踐,闡述如何通過ServiceLoader和SpringFactoriesLoader實現(xiàn)服務發(fā)現(xiàn)及動態(tài)配置加載,并利用條件注解@Conditional進行智能過濾,最終指導開發(fā)者自定義Starter并配置屬性提示
    2025-09-09
  • Java實現(xiàn)普通類注入service對象

    Java實現(xiàn)普通類注入service對象

    這篇文章主要介紹了Java實現(xiàn)普通類注入service對象,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • 解決 IDEA 創(chuàng)建 Gradle 項目沒有src目錄問題

    解決 IDEA 創(chuàng)建 Gradle 項目沒有src目錄問題

    這篇文章主要介紹了解決 IDEA 創(chuàng)建 Gradle 項目沒有src目錄問題,本文圖文并茂給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2018-06-06
  • java模擬http的Get/Post請求,并設置ip與port代理的方法

    java模擬http的Get/Post請求,并設置ip與port代理的方法

    下面小編就為大家?guī)硪黄猨ava模擬http的Get/Post請求,并設置ip與port代理的方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-02-02
  • Spring中的@ExceptionHandler注解統(tǒng)一異常處理詳解

    Spring中的@ExceptionHandler注解統(tǒng)一異常處理詳解

    這篇文章主要介紹了Spring中的@ExceptionHandler注解統(tǒng)一異常處理詳解,當我們使用這個@ExceptionHandler注解時,定義一個異常的處理方法,加上@ExceptionHandler注解,這個方法就會處理類中其他方法拋出的異常,需要的朋友可以參考下
    2024-01-01
  • 深入探究Bean生命周期的擴展點Bean Post Processor

    深入探究Bean生命周期的擴展點Bean Post Processor

    在Spring框架中,Bean生命周期的管理是非常重要的一部分,在Bean的創(chuàng)建、初始化和銷毀過程中,Spring提供了一系列的擴展點,其中,Bean Post Processor(后處理器)是一個重要的擴展點,它能夠在Bean的初始化前后做一些額外的處理,本文就和大家一起深入探究
    2023-07-07
  • Java的HashTable源碼解讀

    Java的HashTable源碼解讀

    這篇文章主要介紹了Java的HashTable源碼解讀,HashTable繼承了Dictionary類,提供了一些字典相關的基本功能如添加、刪除、判空、獲取元素數(shù)量等,需要的朋友可以參考下
    2023-12-12

最新評論

青海省| 斗六市| 班戈县| 五莲县| 达孜县| 敦煌市| 林口县| 博爱县| 泗阳县| 柳林县| 读书| 通道| 白山市| 永和县| 雅安市| 绵阳市| 辽宁省| 察隅县| 安远县| 静宁县| 开化县| 泽库县| 舟山市| 田东县| 甘谷县| 吉水县| 永胜县| 阜新市| 恩施市| 南京市| 南宁市| 丹巴县| 祁阳县| 云南省| 融水| 唐山市| 资溪县| 北票市| 枣庄市| 永川市| 芜湖县|