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ù))
請求頭字段 | 作用說明 | 示例 |
| 服務器域名 + 端口(HTTP/1.1 必需,區(qū)分虛擬主機) |
|
| 客戶端身份(瀏覽器 / 設備信息,用于服務器適配) |
|
| 客戶端可接受的響應數(shù)據(jù)類型 |
|
| 請求體的數(shù)據(jù)類型(POST/PUT 時必需) |
|
| 請求體的字節(jié)長度(幫助服務器接收完整數(shù)據(jù)) |
|
| 客戶端存儲的 Cookie(用于會話管理) |
|
| 是否復用 TCP 連接(HTTP/1.1 默認 ) |
|
請求體示例(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ù))
響應頭字段 | 作用說明 | 示例 |
| 響應體的數(shù)據(jù)類型 + 編碼(客戶端解析依據(jù)) |
|
| 響應體的字節(jié)長度 |
|
| 服務器軟件信息(如 Web 服務器類型) |
|
| 服務器向客戶端寫入 Cookie(會話管理) |
|
| 重定向的目標 URL(配合 3xx 狀態(tài)碼使用) |
|
| 緩存控制策略(如緩存有效期) |
|
| 服務不可用時,建議重試的時間(秒,配合 503) |
|
響應體示例
- 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) | 訪問頁面、查詢列表(如 ) |
POST | 提交資源(創(chuàng)建) | 1. 請求參數(shù)在請求體中(不可見);2. 非冪等;3. 無長度限制 | 表單提交、用戶注冊、登錄 |
PUT | 全量更新資源 | 1. 需提供資源的完整信息;2. 冪等;3. 覆蓋式更新 | 全量修改用戶信息(如 ) |
DELETE | 刪除資源 | 1. 無請求體(或僅傳輔助參數(shù));2. 冪等 | 刪除用戶( )、刪除文章 |
PATCH | 部分更新資源 | 1. 僅需提供需修改的字段;2. 冪等 | 僅更新用戶手機號( ) |
HEAD | 獲取資源頭部 | 與 GET 一致,但無響應體(僅返回頭信息) | 檢查資源是否存在、獲取緩存信息 |
關鍵概念:冪等性
- 指 “多次執(zhí)行相同請求,結果完全一致(無副作用)”。例如:GET 查詢 100 次,結果相同;DELETE 刪除 100 次,第一次刪完后,后續(xù) 99 次仍返回 “刪除成功”(無額外副作用)。
重點:GET 與 POST 的核心區(qū)別
對比維度 | GET | POST |
數(shù)據(jù)位置 | URL 參數(shù)( ) | 請求體(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ù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
java 輸入一個數(shù)字組成的數(shù)組(輸出該數(shù)組的最大值和最小值)
這篇文章主要介紹了java 輸入一個數(shù)字組成的數(shù)組,輸出該數(shù)組的最大值和最小值,需要的朋友可以參考下2017-02-02
解決 IDEA 創(chuàng)建 Gradle 項目沒有src目錄問題
這篇文章主要介紹了解決 IDEA 創(chuàng)建 Gradle 項目沒有src目錄問題,本文圖文并茂給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下2018-06-06
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)一異常處理詳解,當我們使用這個@ExceptionHandler注解時,定義一個異常的處理方法,加上@ExceptionHandler注解,這個方法就會處理類中其他方法拋出的異常,需要的朋友可以參考下2024-01-01
深入探究Bean生命周期的擴展點Bean Post Processor
在Spring框架中,Bean生命周期的管理是非常重要的一部分,在Bean的創(chuàng)建、初始化和銷毀過程中,Spring提供了一系列的擴展點,其中,Bean Post Processor(后處理器)是一個重要的擴展點,它能夠在Bean的初始化前后做一些額外的處理,本文就和大家一起深入探究2023-07-07

