HTTP協議講解

概念: Hyper Text Transfer Protocol 超文本傳輸協議,規定了瀏覽器和服務器之間的數據傳輸規則
在這里插入圖片描述
特點

  • 基于TCP協議,面向連接,安全
  • 基于請求-響應模型的,一次請求對應一次響應
  • 無狀態的,對于事物沒有記憶能力,每次請求-響應都是獨立的
    • 缺點:多次請求間不能共享數據
    • 優點: 響應速度快

請求協議
常見請求字段

在這里插入圖片描述

  • Get方式:請求參數在請求行中,沒有請求體,請求大小在瀏覽器中是有限制的。
  • Post方式:請求參數在請求體中,請求大小沒有限制。

請求數據獲取

  • web服務器(Tomcat)對http協議的請求數據進行了解析,并進行了封裝(HttpServeletRequest),在調用controller方法的時候自動傳遞給了該方法,因此我們不必直接對原始協議進行操作。

在這里插入圖片描述
代碼示例:

package com.huohuo;import jakarta.servlet.http.HttpServletRequest;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
public class RequestController {@RequestMapping(value = "/request")public String request(HttpServletRequest request) {// 獲取請求方式String method = request.getMethod();// 獲取請求路徑String requestURL = request.getRequestURL().toString();String requestURI = request.getRequestURI(); // 是資源訪問路徑// 獲取請求協議String protocol = request.getProtocol();// 獲取請求參數 - name, ageString name = request.getParameter("name");String age = request.getParameter("age");// 獲取請求頭 - AcceptString accept = request.getHeader("Accept");return "OK<br/>" +"method:" + method + "<br/>" +"requestURL:" + requestURL + "<br/>" +"requestURI:" + requestURI + "<br/>" +"protocol:" + protocol + "<br/>" +"name:" + name + "<br/>" +"age:" + age + "<br/>" +"accept:" + accept + "<br/>";}
}

啟動后訪問localhost:8080/request?name=huohuo&age=18

在這里插入圖片描述
響應協議
以下是常見的響應狀態碼:
在這里插入圖片描述在這里插入圖片描述在這里插入圖片描述
web服務器對http協議的響應數據進行了封裝(HttpServeletResponse),并在調用Controller方法的時候傳遞了該方法,這就使得程序員不必對協議直接進行操作,讓web開發更加便捷。

使用response或spring對象進行響應

    @RequestMapping("/response")// 第一種方式,響應體是字符串,會自動設置響應頭 Content-Type: text/plain;charset=UTF-8public void Response(HttpServletResponse response) throws IOException {// 設置響應狀態碼response.setStatus(HttpServletResponse.SC_OK); // 200// 設置響應頭response.setHeader("name", "huohuo");// 設置響應體// 會拋出 IOException, 因為 response.getWriter() 獲取的流,是和 response 關聯的,response.getWriter().write("<h1> hello response </h1>");}
// 使用spring中提供的方式,封裝對象返回
@RequestMapping("/response2")
// 這是第二種方式,返回 ResponseEntity 對象,會自動設置響應頭 Content-Type: text/plain;charset=UTF-8,也可以手動設置
public ResponseEntity<String> response2(HttpServletRequest request) {return ResponseEntity.status(200).header("name2", "huohuo2").body("<h1> hello response2 </h1>");
}

注:響應頭和響應狀態碼如果沒有特殊要求的話,通常不手動設定,服務器會根據請求處理的邏輯自動設置狀態碼和頭

致謝:本文參考黑馬程序員的視頻。
https://www.bilibili.com/video/BV1yGydYEE3H/?vd_source=1b8f9bfb1d0891faf1c70d7678ae56db

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

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

相關文章

全國節能宣傳周線上知識競賽

線上知識競賽|節能降碳知識知多少 引言 全國節能宣傳周舉辦的主題是“綠色低碳&#xff0c;節能先行”。國家節能中心會同相關單位共同打造了一款線上知識競賽小程序&#xff0c;學習節能知識&#xff0c;爭做節能達人。 1.小程序規則&#xff1a; 體力規則&#xff1a;每位…

【區塊鏈安全 | 第十八篇】類型之引用類型(二)

文章目錄 引用類型數組切片結構體 引用類型 數組切片 數組切片是對數組中連續部分的一個視圖。它的語法為 x[start:end]&#xff0c;其中 start 和 end 是表達式&#xff0c;結果類型為 uint256&#xff08;或者可以隱式轉換為 uint256&#xff09;。切片的第一個元素是 x[st…

GitHub上免費學習工具的精選匯總

以下是GitHub上免費學習工具的精選匯總&#xff0c;涵蓋編程語言、開發框架、數據科學、面試準備等多個方向&#xff0c;結合工具的功能特點、社區活躍度及適用場景進行分類推薦&#xff1a; 一、編程語言與開發框架 Web Developer Roadmap 簡介&#xff1a;為開發者提供全棧學…

[leetcode]2685. 統計完全連通分量的數量

題目鏈接 題意 給定無向圖&#xff0c;求完全連通分量 連通分量就是一個連通塊的意思 完全連通分量&#xff1a;就是一個連通塊中 &#xff0c;所有點之間都兩兩有邊相連 思路 一個完全聯通分量有n個點 那么應該有 C n 2 C_n^2 Cn2?條邊 并查集維護連通塊 檢查每個聯通分量…

使用LangChain Agents構建Gradio及Gradio Tools(3)——使用Langchain agents構建Gradio UI

使用LangChain Agents構建Gradio及Gradio Tools(3)——使用Langchain agents構建Gradio UI 本篇摘要16. 使用LangChain Agents構建Gradio及Gradio Tool16.3 使用Langchain agents構建Gradio UI16.3.1 創建代理16.3.2 創建Gradio UI16.3.3 運行demo參考文獻本章目錄如下: 《使…

項目實戰 - 用戶列表

用戶列表想要實現這樣的效果&#xff1a; 渲染數據&#xff1a; import React,{useState,useEffect} from react; import { Button,Table, Tag,Modal,Popover, Switch } from antd; import { EditOutlined,DeleteOutlined,ExclamationCircleOutlined } from ant-design/icons…

吾愛破解安卓逆向學習筆記(4p)

學習目標&#xff0c;了解安卓四大組件&#xff0c;activity生命周期&#xff0c;同時了解去除部分廣告和更新提示。 廣告類型 1.啟動頁廣告 2.更新廣告 3.橫幅廣告 安卓四大組件 組件描述Activity(活動)在應用中的一個Activity可以用來表示一個界面&#xff0c;意思可以…

【目標檢測】【深度學習】【Pytorch版本】YOLOV1模型算法詳解

【目標檢測】【深度學習】【Pytorch版本】YOLOV1模型算法詳解 文章目錄 【目標檢測】【深度學習】【Pytorch版本】YOLOV1模型算法詳解前言YOLOV1的模型結構YOLOV1模型的基本執行流程YOLOV1模型的網絡參數YOLOV1模型的訓練方式 YOLOV1的核心思想前向傳播階段網格單元(grid cell)…

Vue項目中Vuex在util引入,斷點存在default

示例代碼 // src/store/index.js import Vue from vue; import Vuex from vuex; ……Vue.use(Vuex); export default new Vuex.Store({…… })// src/utils/index.js import store from /store // 導入默認導出的 store export async function getDict() {store.state.userInf…

FALL靶機滲透實戰:從信息收集到特權升級的完整鏈分析

1.下載靶機&#xff0c;并在虛擬機中打開 2.用kali來確定該靶機的IP kali的IP&#xff1a;192.168.139.152 arp-scan -l 3.掃描端口 nmap -O 192.168.139.172 4.掃目錄 gobuster dir -u http://192.168.139.172 -x php,txt,html -w /usr/share/dirbuster/wordlists/directo…

談談常見的數據結構(如數組、鏈表、棧、隊列、哈希表、樹、圖)及其應用場景

一、數組&#xff08;Array&#xff09; 定義&#xff1a;連續存儲相同類型數據的線性結構&#xff0c;支持隨機訪問。 應用場景&#xff1a;列表渲染、數據緩存、算法處理 代碼示例&#xff1a; // 數組基本操作 const arr [1, 2, 3, 4]; arr.push(5); // O(1) 平均時間復雜…

Kafka 的高可用性

Kafka 的高可用性主要通過副本機制、ISR&#xff08;In-Sync Replicas&#xff09;列表和控制器 Broker 來實現。這些機制共同確保了 Kafka 集群在部分節點故障時仍然可以正常運行&#xff0c;數據不會丟失&#xff0c;并且服務不會中斷。 1. 副本機制 Kafka 的副本機制是其高…

力扣HOT100之矩陣:54. 螺旋矩陣

這道題之前在代碼隨想錄里刷過類似的&#xff0c;還有印象&#xff0c;我就按照當初代碼隨想錄的思路做了一下&#xff0c;結果怎么都做不對&#xff0c;因為按照代碼隨想錄的邊界條件設置&#xff0c;當行數和列數都為奇數時&#xff0c;最后一個元素無法被添加到數組中&#…

快速構建個人本地知識庫管理系統與實現RAG問答

文章目錄 摘要一、RAG 和知識庫簡介1、RAG2、知識庫 二、 工作流程三、系統架構設計文件結構知識庫構建模塊RAG 模塊用戶交互模塊 四、技術實現細節五、系統使用案例結論未來改進方向致謝 摘要 在當今信息爆炸的時代&#xff0c;快速準確地獲取知識變得尤為重要。本地 RAG&…

使用DeepSeek API進行情感分析:超簡單

文章目錄 1. 引言1.1 情感分析概述1.2 為什么選擇DeepSeek API1.3 本文目標 2. 技術方案對比2.1 傳統情感分析方法2.2 基于LLM的方法DeepSeek API優勢 3. DeepSeek 情感分析實戰3.1 Few-shot Learning方法3.2 完整的DeepSeek API調用示例3.3 案例演示 4. DeepSeek開發情感分析工…

設置網站主題色color-scheme

color-scheme color-scheme CSS 屬性允許元素指示它可以舒適地呈現哪些顏色方案。 操作系統顏色方案的常見選擇為“亮色”和“暗色”&#xff0c;或“日間模式”和“夜間模式”。當用戶選擇其中一種顏色方案時&#xff0c;操作系統會對用戶界面進行調整&#xff0c;包括表單控件…

Muduo網絡庫實現 [三] - Socket模塊

目錄 設計思路 類的設計 模塊的實現 基礎模塊 特殊模塊 集成模塊 主函數 主函數實現 主函數測試 疑惑點 設計思路 Socket模塊主要是對套接字的基礎操作進行封裝&#xff0c;簡化我們對套接字的操作&#xff0c;不需要調用C的原生接口&#xff0c;而是以面向對象的…

優選算法的巧思之徑:模擬專題

專欄&#xff1a;算法的魔法世界 個人主頁&#xff1a;手握風云 目錄 一、模擬 二、例題講解 2.1. 替換所有的問號 2.2. 提莫攻擊 2.3. Z字形變換 2.4. 外觀數列 2.5. 數青蛙 一、模擬 模擬算法說簡單點就是照葫蘆畫瓢&#xff0c;現在草稿紙上模擬一遍算法過程&#xf…

貪心算法(13)(java)合并區間

題目&#xff1a; 以數組 intervals 表示若干個區間的集合&#xff0c;其中單個區間為 intervals[i] [starti, endi] 。請你合并所有重疊的區間&#xff0c;并返回 一個不重疊的區間數組&#xff0c;該數組需恰好覆蓋輸入中的所有區間 。 示例 1&#xff1a; 輸入&#xff…

A股復權計算_權息數據整理

目錄 前置&#xff1a; 步驟&#xff1a; 1 以通達信為參照 2 從優礦獲取所需數據 2.1 股票配股信息 2.2 股票分紅信息 2.3 股票拆股信息 3 合并數據&#xff0c;制成權息數據表 權息數據截止20250329.7z 視頻 前置&#xff1a; 1 本系列將以 “A股復權計算_” 開頭…