Web 后端 請求與響應

一 請求響應

1. 請求(Request)

客戶端向服務器發送的HTTP請求,通常包含以下內容:

  • 請求行:HTTP方法(GET/POST等)、請求的URL、協議版本。

  • 請求頭(Headers):客戶端信息(如瀏覽器類型、支持的語言)、Cookie、內容類型等。

  • 請求體(Body):POST/PUT請求時攜帶的數據(如表單參數、JSON)。

在JavaWeb中的處理

  • Servlet通過HttpServletRequest對象接收請求:

protected void doGet(HttpServletRequest request, HttpServletResponse response) {// 獲取請求參數(如URL中的參數)String username = request.getParameter("username");// 獲取請求頭信息String userAgent = request.getHeader("User-Agent");
}

2. 響應(Response)

服務器處理請求后返回給客戶端的HTTP響應,通常包含:

  • 狀態行:狀態碼(如200成功、404未找到)、狀態描述。

  • 響應頭(Headers):內容類型(如HTML/JSON)、Cookie、緩存控制等。

  • 響應體(Body):返回的實際內容(如HTML頁面、JSON數據)。

在JavaWeb中的處理

  • Servlet通過HttpServletResponse對象生成響應:

protected void doGet(HttpServletRequest request, HttpServletResponse response) {// 設置響應內容類型(如HTML或JSON)response.setContentType("text/html;charset=UTF-8");// 寫入響應內容PrintWriter out = response.getWriter();out.println("<h1>Hello, World!</h1>");// 設置響應狀態碼(可選)response.setStatus(200);
}

3. 常見場景

  • GET請求:獲取數據(如訪問網頁),參數通過URL傳遞。

  • POST請求:提交數據(如表單提交),參數通過請求體傳遞。

  • 重定向:服務器返回302狀態碼,讓客戶端跳轉到新URL。

response.sendRedirect("/new-page.jsp");

返回JSON:常用于前后端分離項目。

response.setContentType("application/json;charset=UTF-8");
String json = "{\"name\":\"Tom\", \"age\":20}";
out.print(json);

4. 典型流程

  1. 客戶端發送HTTP請求到服務器(如訪問/login)。

  2. 服務器解析請求,交給對應的Servlet處理。

  3. Servlet通過request獲取參數,執行業務邏輯(如查詢數據庫)。

  4. Servlet通過response生成響應(返回頁面或數據)。

  5. 客戶端接收并渲染響應結果。

5 總結

  • 請求(Request):客戶端向服務器要數據或提交數據。

  • 響應(Response):服務器處理請求后返回結果。

  • JavaWeb通過HttpServletRequestHttpServletResponse對象封裝了HTTP協議的底層細節,開發者只需關注業務邏輯的實現。

二 BS架構與CS架構

1. BS架構(Browser/Server)

定義

用戶通過瀏覽器(如Chrome、Firefox)訪問應用,業務邏輯和數據存儲集中在服務器端,客戶端僅負責展示和簡單交互。

特點
  • 客戶端:無需安裝額外軟件,只需瀏覽器。

  • 服務器:負責核心邏輯、數據處理和存儲。

  • 通信:基于HTTP/HTTPS協議,通過請求-響應模式交互。

優點
  • 跨平臺:支持任何有瀏覽器的設備(PC、手機、平板)。

  • 維護方便:只需更新服務器,客戶端自動同步。

  • 低成本:無需開發和維護多平臺的客戶端。

  • 輕量級:適合快速迭代的Web應用(如電商、博客)。

缺點
  • 性能依賴網絡:弱網環境下體驗差。

  • 功能受限:復雜操作(如3D渲染、本地硬件調用)支持有限。

  • 安全性較低:易受XSS、CSRF等Web攻擊。

適用場景
  • Web應用(如在線辦公、電商網站)。

  • 信息展示型系統(如新聞門戶、企業官網)。

  • 輕量級交互需求(如表單提交、數據查詢)。

技術棧
  • 前端:HTML/CSS/JavaScript、React/Vue等框架。

  • 后端:Java/Python/PHP、Spring/Django/Node.js。

  • 協議:HTTP/HTTPS、WebSocket。

2. CS架構(Client/Server)

定義

用戶需要安裝獨立的客戶端軟件,客戶端承擔部分業務邏輯,與服務器協同工作。

特點
  • 客戶端:需安裝特定程序(如桌面應用、手機APP)。

  • 服務器:負責核心數據和業務邏輯。

  • 通信:通常基于TCP/UDP或自定義協議,支持實時交互。

優點
  • 性能高:客戶端可處理復雜計算(如圖形渲染、本地緩存)。

  • 功能強大:支持本地硬件操作(如攝像頭、打印機)。

  • 離線可用:部分功能可在無網絡時使用(如本地數據庫)。

缺點
  • 開發維護成本高:需適配多平臺(Windows/macOS/iOS/Android)。

  • 更新復雜:需用戶手動升級客戶端版本。

  • 依賴用戶設備:硬件兼容性可能存在問題。

適用場景
  • 高性能需求應用(如大型游戲、視頻編輯軟件)。

  • 本地硬件交互(如工業控制、醫療設備)。

  • 企業級內部系統(如ERP、財務軟件)。

技術棧
  • 客戶端:C++/C#(桌面)、Java/Kotlin(Android)、Swift(iOS)。

  • 服務器:Java/Python/C++、MySQL/Oracle等數據庫。

  • 通信協議:TCP/UDP、gRPC、自定義二進制協議。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/70235.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/70235.shtml
英文地址,請注明出處:http://en.pswp.cn/web/70235.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【Excel筆記_6】條件格式和自定義格式設置表中數值超過100保留1位,超過1000保留0位,低于100為默認

方法一&#xff1a;自定義格式 選中需要設置格式的單元格區域。右鍵選擇設置單元格格式&#xff0c;或者在工具欄中選擇開始 -> 數字 -> 自定義格式。在類型框中輸入以下自定義格式&#xff1a; [>1000]0;[>100]0.0;G/通用格式解釋&#xff1a; [>1000]0&…

排序與算法:希爾排序

執行效果 希爾排序的執行效果是這樣的&#xff1a; 呃……看不懂嗎&#xff1f;沒關系&#xff0c;接著往下看介紹 算法介紹 希爾排序算法&#xff08;Shell Sort&#xff09;是按其設計者希爾&#xff08;Donald Shell&#xff09;的名字命名&#xff0c;該算法由 1959 年公布…

Python HTTP 請求工具類 HttpUtils:簡化 HTTP 請求的高效工具

在現代的 Web 開發和 API 集成中,HTTP 請求是最常見的操作之一。無論是獲取數據、提交表單,還是與 RESTful API 交互,我們都需要頻繁地發送 HTTP 請求。為了簡化這些操作,提升代碼的可讀性和可維護性,我們可以使用一個高效的工具類——HttpUtils。本文將詳細介紹 HttpUtil…

親測Windows部署Ollama+WebUI可視化

一. Ollama下載 登錄Ollama官網(Ollama)點擊Download進行下載 如果下載很慢可用以下地址下載&#xff1a; https://github.com/ollama/ollama/releases/download/v0.5.7/OllamaSetup.exe 在DeepSeek官網上&#xff0c;你可以直接點擊【model】 到達這個界面之后&#xff0c;…

用xml配置spring, bean標簽有哪些屬性?

用xml配置spring, bean標簽有哪些屬性? 在Spring框架中&#xff0c;使用XML配置文件時&#xff0c;<bean>標簽用于定義一個Bean。以下是一些常用的<bean>標簽屬性&#xff1a; 1. class 描述&#xff1a;指定Bean的類名。示例&#xff1a;<bean id"myBe…

50頁PDF|數字化轉型成熟度模型與評估(附下載)

一、前言 這份報告依據GBT 43439-2023標準&#xff0c;詳細介紹了數字化轉型的成熟度模型和評估方法。報告將成熟度分為五個等級&#xff0c;從一級的基礎轉型意識&#xff0c;到五級的基于數據的生態價值構建與創新&#xff0c;涵蓋了組織、技術、數據、資源、數字化運營等多…

golang panic信息捕獲

背景 我們的日志接入阿里云sls平臺&#xff0c;但是&#xff0c;日志是以json的格式存儲在阿里云sls平臺上&#xff0c;程序中產生的error,info等日志都可以實現以json的格式打印。但是&#xff0c;golang程序中產生的panic信息本身不是以json的格式輸出&#xff0c;這就導致p…

攔截器VS過濾器:Spring Boot中請求處理的藝術!

目錄 一、攔截器&#xff08;Interceptor&#xff09;和過濾器&#xff08;Filter&#xff09;&#xff1a;都是“守門員”&#xff01;二、如何實現攔截器和過濾器&#xff1f;三、攔截器和過濾器的區別四、執行順序五、真實的應用場景六、總結 &#x1f31f;如果喜歡作者的講…

FastGPT及大模型API(Docker)私有化部署指南

??歡迎關注【AI技術開發者】 ? 經過優化&#xff0c;在不影響FastGPT功能的情況下&#xff0c;大幅降低了部署的設備配置要求&#xff0c;僅需1c1h即可正常部署使用。 官方要求配置&#xff1a; ? ? 優化后的實際占用情況&#xff1a; 運行內存僅需370M&#xff08…

解決 WSL Ubuntu 中 /etc/resolv.conf 自動重置問題

解決 WSL Ubuntu 中 /etc/resolv.conf 自動重置問題 前言問題描述問題原因嘗試過的命令及分析解決方案&#xff1a;修改 wsl.conf 禁用自動生成總結 前言 在使用 Windows Subsystem for Linux (WSL) 的 Ubuntu 子系統時&#xff0c;你可能會遇到 /etc/resolv.conf 文件被自動重…

【第15章:量子深度學習與未來趨勢—15.3 量子深度學習在圖像處理、自然語言處理等領域的應用潛力分析】

一、開篇:為什么我們需要關注這場"量子+AI"的世紀聯姻? 各位技術愛好者們,今天我們要聊的這個話題,可能是未來十年最值得押注的技術革命——量子深度學習。這不是簡單的"1+1=2"的物理疊加,而是一場可能徹底改寫AI發展軌跡的范式轉移。 想象這樣一個…

企業軟件合規性管理:構建高效、安全的軟件資產生態

引言 在數字化轉型的浪潮下&#xff0c;企業的軟件使用方式日益多元化&#xff0c;涉及云端、訂閱制、永久授權及浮動許可等多種模式。然而&#xff0c;隨著軟件資產的增多&#xff0c;企業面臨著合規性管理的嚴峻挑戰&#xff1a;非法軟件使用、許可證管理不當、軟件資產閑置…

python學習筆記,python處理 Excel、Word、PPT 以及郵件自動化辦公

文章目錄 前言一、環境搭建1. 下載 Python2. 安裝 Python 二、處理 Excel 文件&#xff08;openpyxl庫&#xff09;三、 處理 Word 文件&#xff08;python-docx庫&#xff09;四、 處理 PPT 文件&#xff08;python-pptx庫&#xff09;五、 自動發送郵件&#xff08;smtplib和…

Python 基礎-循環

目錄 簡介 break continue 小結 簡介 要計算123&#xff0c;我們可以直接寫表達式&#xff1a; >>> 1 2 3 6要計算123...10&#xff0c;勉強也能寫出來。 但是&#xff0c;要計算123...10000&#xff0c;直接寫表達式就不可能了。 為了讓計算機能計算成千上…

簡單易懂,解析Go語言中的Channel管道

Channel 管道 1 初始化 可用var聲明nil管道&#xff1b;用make初始化管道&#xff1b; len()&#xff1a; 緩沖區中元素個數&#xff0c; cap()&#xff1a; 緩沖區大小 //變量聲明 var a chan int //使用make初始化 b : make(chan int) //不帶緩沖區 c : make(chan stri…

python-leetcode 36.二叉樹的最大深度

題目&#xff1a; 給定一個二叉樹root,返回其最大深度 二叉樹的最大深度是指從根節點到最遠葉子節點的最長路徑上的節點數 方法一&#xff1a;深度優先搜索 知道了左子樹和右子樹的最大深度l和r&#xff0c;那么該二叉樹的最大深度即為:max(l,r)1 而左子樹和右子樹的最大深…

RESTful 的特點與普通 Web API 的區別

RESTful 是一種設計風格&#xff0c;而不僅僅是普通的 Web API。它遵循一些特定的原則和約束&#xff0c;使得 API 更加簡潔、可擴展和易于理解。以下是 RESTful 的特點&#xff0c;以及與普通 Web API 的區別&#xff1a; RESTful 的特點 1. 資源導向 RESTful API 的核心是資…

結構風荷載理論與Matlab計算

結構風荷載理論與matlab計算的實例程序&#xff0c;適合初學者理解matlab風荷載計算 資源文件列表 程序_結構風荷載理論與Matlab計算/chapter1/exam_simWind_1_1.m , 1035 程序_結構風荷載理論與Matlab計算/chapter1/Extrmv.m , 303 程序_結構風荷載理論與Matlab計算/chapter1…

numpy(02 數據類型和數據類型轉換)

numpy(01 入門) 目錄 一、Python NumPy 數據類型 1.1 NumPy 基本類型 1.2 數據類型對象 (dtype) 1.3 具體實例 二、Numpy數據類型轉換 2.1 浮點數據轉換 2.2 整型數據轉換 2.3 浮點數轉整數 一、Python NumPy 數據類型 1.1 NumPy 基本類型 下表列舉了常用 NumPy 基…

【雅思博客04】Silence please!

A: Those people in front of us are making so much noise. It’s so inconsiderate! B: Don’t worry about it; it’s not such a big deal. A: Oh... I can’t hear a thing! Excuse me, can you keep it down? C: Sure, sorry about that! A: Someone’s phone is ri…